add scripts for generating a diff from p4...

awkdiff is the script from scottl that he got from ken a long time
ago...  It no longer lives in his home dir, so give it a new home...
This does simple massaging of p4 output to create a useful diff...

The script p4diffbranch will create a diff that includes new and
deleted files unlike the normal diff2 -b command...  So will be useful
for extracting patches from p4...  It does take a changeset that will
be used to diff against...
This commit is contained in:
John-Mark Gurney 2014-08-27 18:56:12 +00:00
parent 3419bf0107
commit d1522a3ba7
2 changed files with 61 additions and 0 deletions

42
tools/tools/perforce/awkdiff Executable file
View File

@ -0,0 +1,42 @@
#!/usr/bin/awk -f
#
# $FreeBSD$
#
BEGIN {
#parentpath = "//depot/vendor/freebsd/src/sys/"
#childpath = "//depot/projects/opencrypto/"
}
$1 == "====" {
last_line = $0
last_filename = $2
#gsub(parentpath, "", last_filename)
gsub(/#[0-9]*$/, "", last_filename)
did_sub = 0
}
$1 == "====" && $2 == "<none>" {
new_file = $4
gsub(childpath, "", new_file)
gsub(/#[0-9]*$/, "", new_file)
cmd = "p4 print \"" $4 "\" | sed '/^\\/\\/depot/d' | diff -u /dev/null /dev/stdin | sed s@/dev/stdin@" new_file "@"
#print "x" cmd "x"
system(cmd)
}
$1 == "====" && $4 == "<none>" {
del_file = $2
gsub(parentpath, "", del_file)
gsub(/#[0-9]*$/, "", del_file)
cmd = "p4 print \"" $2 "\" | sed '/^\\/\\/depot/d' | diff -u /dev/stdin /dev/null | sed s@/dev/stdin@" del_file "@"
#print "x" cmd "x"
system(cmd)
}
$1 != "====" {
if (!did_sub && (($1 == "***************") || ($1 == "@@"))) {
print "--- ", last_filename ".orig"
print "+++ ", last_filename
print $0
did_sub = 1
} else {
print $0
}
}

View File

@ -0,0 +1,19 @@
#!/bin/sh -
#
# $FreeBSD$
#
if [ x"$#" != x"2" ]; then
echo "Usage: $0 <branch> <changesetnum>"
exit 1
fi
basescript="$(realpath "$0")"
awkdiff="${basescript%/*}/awkdiff"
branch="$1"
changenum="$2"
p4 branch -o "$branch" |
awk ' /^View:/ { doview = 1; next; } /^[^ ]/ {doview = 0; next; } $1 && $2 && doview == 1 { system("p4 diff2 -du " $1 "@" changenum " " $2) }' changenum="$changenum" |
"$awkdiff"