chiark / gitweb /
Make "stg refresh" subdirectory safe
[stgit] / contrib / stg-mdiff
index cd0c678b97d443be21519680770a8613be5e7e4d..74d7f77b1053252023750c6dbe9aa6118dc99cd1 100755 (executable)
@@ -12,12 +12,40 @@ set -e
 
 usage()
 {
-    echo "Usage: $(basename $0) <patch1> <patch2>"
+    echo "Usage: [-o <diff-flags>] [-O <gitdiff-flags>] $(basename $0) <from1>..[<to1>]|<patch1> <from2>..[<to2>]|<patch2>"
     exit 1
 }
 
+diffopts=
+subdiffopts=
+while [ "$#" -gt 0 ]; do
+    case "$1" in
+       -o) diffopts="$2"; shift ;;
+       -O) subdiffopts="-O $2"; shift ;;
+       -*) usage ;;
+       *) break ;;
+    esac
+    shift
+done
+
 if [ "$#" != 2 ]; then
     usage
 fi
 
-colordiff -u <(stg show "$1") <(stg show "$2") | less -RFX
+if [ -z "$diffopts" ]; then
+    diffopts="-u"
+fi
+
+case "$1" in
+*..*) cmd1="stg diff $subdiffopts -r" ;;
+*)    cmd1="stg show $subdiffopts" ;;
+esac
+case "$2" in
+*..*) cmd2="stg diff $subdiffopts -r" ;;
+*)    cmd2="stg show $subdiffopts" ;;
+esac
+
+colordiff $diffopts \
+    -I '^index [0-9a-b]*..[0-9a-b]*' \
+    -I '^@@ .* @@' \
+    <($cmd1 "$1") <($cmd2 "$2") | less -RFX