Prev |  | Next

# 10 Diffs

There are two methods of producing file diffs in Perforce, either against local changes that have not been submitted yet, or between two trees (or within a branch) in the depot. These are done with different commands, `diff` and `diff2`:

`p4 diff`

  This generates a diff of the local changes to files in the edit state. The `-du` and `-dc` flags can be used to create unified or context diffs, respectively, or the `P4DIFF` environment variable can be set to a local diff command to be used instead. It is a very good idea to use this command to review your changes before submitting them.

`p4 diff2`

  This creates a diff between arbitrary files in the depot, or between files specified in a branch spec. The diff operation takes place on the server, so `P4DIFF` variable has no effect, though the `-du` and `-dc` flags do work. The two forms of this command are:

      % p4 diff2 -b branchname

  and

      % p4 diff2 //depot/path1 //depot/path2

In all cases the diff will be written to the standard output. Unfortunately, Perforce produces a diff format that is slightly incompatible with the traditional Unix diff and patch tools. Using the `P4DIFF` variable to point to the real diff(1) tool can help this, but only for the `p4 diff` command. The output of `diff2` command must be post-processed to be useful (the `-u` flag of `diff2` will produce unified diffs that are somewhat compatible, but it does not include files that have been added or deleted). There is a post-processing script at: http://people.freebsd.org/~scottl/awkdiff.

Prev | Home | Next
Changes, Descriptions, and History |  | Adding and Removing Files