| #!/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 |