#!/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 # Subject to the GNU GPL, version 2. usage() { echo "Usage: [-o ] [-O ] $(basename "$0") ..[]| ..[]|" 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