chiark / gitweb /
Correctly identify the parent branch (bug #10014)
[stgit] / contrib / stg-mdiff
1 #!/bin/bash
2 set -e
3
4 # stg-mdiff - display meta-diffs, ie. diffs of diffs
5
6 # Main use: show evolutions of a patch.
7 # eg. stg-mdiff foo@stable foo
8 #     stg-mdiff foo 012345567ABCD # sha1 for "foo" as integrated upstream
9
10 # Copyright (c) 2007 Yann Dirson <ydirson@altern.org>
11 # Subject to the GNU GPL, version 2.
12
13 usage()
14 {
15     echo "Usage: [-o <diff-flags>] [-O <gitdiff-flags>] $(basename $0) <from1>..[<to1>]|<patch1> <from2>..[<to2>]|<patch2>"
16     exit 1
17 }
18
19 diffopts=
20 subdiffopts=
21 while [ "$#" -gt 0 ]; do
22     case "$1" in
23         -o) diffopts="$2"; shift ;;
24         -O) subdiffopts="-O $2"; shift ;;
25         -*) usage ;;
26         *) break ;;
27     esac
28     shift
29 done
30
31 if [ "$#" != 2 ]; then
32     usage
33 fi
34
35 if [ -z "$diffopts" ]; then
36     diffopts="-u"
37 fi
38
39 case "$1" in
40 *..*) cmd1="stg diff $subdiffopts -r" ;;
41 *)    cmd1="stg show $subdiffopts" ;;
42 esac
43 case "$2" in
44 *..*) cmd2="stg diff $subdiffopts -r" ;;
45 *)    cmd2="stg show $subdiffopts" ;;
46 esac
47
48 colordiff $diffopts \
49     -I '^index [0-9a-b]*..[0-9a-b]*' \
50     -I '^@@ .* @@' \
51     <($cmd1 "$1") <($cmd2 "$2") | less -RFX