Perforce and `p4 diff2' against the origin

John Baldwin jhb at
Mon Apr 7 14:58:34 UTC 2008

On Saturday 05 April 2008 10:50:38 am Ed Schouten wrote:
> Hello everyone,
> Because my mpsafetty project in Perforce is going quite well, I'm
> considering running some kind of cron job to generate nightly diffs, so
> other people (interested friends, colleagues and others) to test my
> work.
> I've read `p4 help diff2' and it seems you can run the following
> command:
> 	p4 diff2 -b mpsafetty
> Unfortunately this command just does a braindead diff against the latest
> FreeBSD vendor source, which is not useful in my case. I just want it to
> generate a diff against the version I integrated.
> Is it possible to do this with Perforce?

One option is to create a label and sync it each time you do an integ.  I do 
this for projects/smpng.  Then I can do:

p4 diff2 -u -b smpng @smpng_base #head

Another option is to use a convention when you do integ's.  What I tend to do 
is when I do a 'p4 integ' I first do a 'p4 changes -m 10' in another window 
and include the last 'importer' submit in my submit message by having a 
message of:



	'IFC @12345'

Then you can use p4 changes on your branch and find the last IFC and use that 
diff like so:

p4 diff2 -u -b mybranch @12345 #head

I have a script to look in p4 changes of the branch to find the last IFC 
commit and figure out the '12345' part automatically like so:


change=$(p4 changes -m 20 //depot/user/jhb/${b}/... | awk '/IFC @[1-9][0-9]*/ 
{ match($0, /@[1-9][0-9]*/); printf "%s\n", substr($0, RSTART, RLENGTH); exit 
0 }')

echo "Updating ~/work/patches/$b.patch"
p4 diff2 -u -b jhb_$b $change \#head > ~/work/patches/$b.patch

John Baldwin

More information about the freebsd-hackers mailing list