Add -B, -M and -C options to detect content rewrites, renames and changes
to cg-diff and cg-mkpatch, to be passed right down to git-diff-*.
I've not added a way to pass down any option, since not everything may make
sense, and a shell script colorizing --name-only-z output would not play so
nice (and I mean "unreliable behaviour" - not tested obviously).
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[EMAIL PROTECTED]>
---
cg-diff | 17 +++++++++++++++--
cg-mkpatch | 15 ++++++++++++++-
2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/cg-diff b/cg-diff
--- a/cg-diff
+++ b/cg-diff
@@ -28,6 +28,12 @@
# Base the diff at the merge base of the -r arguments (defaulting
# to HEAD and origin).
#
+# -M::
+# -C::
+# -B::
+# Passed down to git-diff-*, to mean respectively "detect renames",
+# "detect copies", "detect file rewriting".
+#
# ENVIRONMENT VARIABLES
# ---------------------
# PAGER::
@@ -92,6 +98,7 @@ id2=" "
parent=
opt_color=
mergebase=
+gitflags=
while optparse; do
if optparse -c; then
@@ -115,6 +122,12 @@ while optparse; do
fi
elif optparse -m; then
mergebase=1
+ elif optparse -M; then
+ gitflags="$gitflags -M"
+ elif optparse -C; then
+ gitflags="$gitflags -C"
+ elif optparse -B; then
+ gitflags="$gitflags -B"
else
optfail
fi
@@ -155,7 +168,7 @@ if [ "$id2" = " " ]; then
# FIXME: Update ret based on what did we match. And take "$@"
# to account after all.
ret=
- cat $filter | xargs git-diff-cache -r -p $tree | colorize | pager
+ cat $filter | xargs git-diff-cache $gitflags -r -p $tree | colorize |
pager
rm $filter
@@ -169,7 +182,7 @@ id2=$(tree-id "$id2") || exit 1
[ "$id1" = "$id2" ] && die "trying to diff $id1 against itself"
-cat $filter | xargs git-diff-tree -r -p $id1 $id2 | colorize | pager
+cat $filter | xargs git-diff-tree $gitflags -r -p $id1 $id2 | colorize | pager
rm $filter
exit 0
diff --git a/cg-mkpatch b/cg-mkpatch
--- a/cg-mkpatch
+++ b/cg-mkpatch
@@ -22,6 +22,12 @@
# -m::
# Base the patches at the merge base of the -r arguments
# (defaulting to HEAD and origin).
+
+# -M::
+# -C::
+# -B::
+# Passed down to git-diff-*, to mean respectively "detect renames",
+# "detect copies", "detect file rewriting".
#
# EXAMPLE USAGE
# -------------
@@ -45,7 +51,7 @@ showpatch()
header=$(mktemp -t gitpatch.XXXXXX)
patch=$(mktemp -t gitpatch.XXXXXX)
id=$1
- cg-diff -p -r $id >$patch
+ cg-diff $gitflags -p -r $id >$patch
git-cat-file commit $id | while read key rest; do
case "$key" in
"author"|"committer")
@@ -81,6 +87,7 @@ omit_header=
log_start=
log_end=
mergebase=
+gitflags=
while optparse; do
if optparse -s; then
@@ -101,6 +108,12 @@ while optparse; do
fi
elif optparse -m; then
mergebase=1
+ elif optparse -M; then
+ gitflags="$gitflags -M"
+ elif optparse -C; then
+ gitflags="$gitflags -C"
+ elif optparse -B; then
+ gitflags="$gitflags -B"
else
optfail
fi
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html