#!/usr/bin/perl # new usage: ./p4patch # Usage: p4 diff2 -du base_view your_view use POSIX (strftime); use File::Basename; die "Usage: $0 [srcpath] [dstpath]\n" if ( $#ARGV ne 1 ); my $src_depot = shift; my $dst_depot = shift; my $src_base=dirname($src_depot); my $dst_base=dirname($dst_depot); $cmd = "p4 diff2 -du $src_depot $dst_depot"; #$cmd = "p4 diff2 -du -b gordon_dirconf"; $cmd = "p4 diff2 -du -b gordon_pkg"; open(P, "$cmd |") || die $!; $time = localtime(); $time = strftime "%a %b %e %H:%M:%S %Y", localtime; $time = strftime "%Y/%m/%d %T", localtime; while (
) { ($f1, $f2, $r) = m|^==== (.+) - (.+) ====? ?(.*)| or print, next; next if $r eq 'identical'; ($src, $srcrev) = ($f1 =~ m|$src_base/([^#]*)#(\d+)|); ($dst, $dstrev) = ($f2 =~ m|$dst_base/([^#]*)#(\d+)|); print "Index: $dst\n"; print '=' x 75 . "\n"; if ($r eq '') { print `p4 print -q $f2 | diff -Nc /dev/null - | sed "s#^--- -#--- $dst#"` if ($f1 =~ /<\s*none\s*>/); print `p4 print -q $f1 | diff -Nc - /dev/null | sed "s#^[*][*][*] -#*** $src#"` if ($f2 =~ /<\s*none\s*>/); next; } print "--- $src\t$time\t#$srcrev\n"; print "+++ $dst\t$time\n"; }