blob: 74d7f77b1053252023750c6dbe9aa6118dc99cd1 [file] [log] [blame]
#!/bin/bash
set -e
# stg-mdiff - display meta-diffs, ie. diffs of diffs
# Main use: show evolutions of a patch.
# eg. stg-mdiff foo@stable foo
# stg-mdiff foo 012345567ABCD # sha1 for "foo" as integrated upstream
# Copyright (c) 2007 Yann Dirson <ydirson@altern.org>
# Subject to the GNU GPL, version 2.
usage()
{
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
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