chiark / gitweb /
Fix removal of series to nuke the formatversion config item.
[stgit] / contrib / stg-whatchanged
1 #!/bin/bash
2 set -e
3
4 # stg-whatchanged - show a metadiff for the patch being modified,
5 # especially when resolving a merge.
6
7 # Copyright (c) 2006-2007 Yann Dirson <ydirson@altern.org>
8 # Subject to the GNU GPL, version 2.
9
10 # FIXME:
11 # - should only exclude hunk headers differing only in line offsets
12 # - diff coloring should show changes in context lines differently than
13 #   changes in contents
14 # - filter on ^index lines is a bit wide
15 # - we should be able to ask diff to force a new hunk on "^@@ " to better
16 #   handle them
17 # - we should always show the hunk header for any changes within a hunk
18
19 # default to unified diff
20 if [ "$#" = 0 ]; then
21     set -- -u
22 fi
23
24 # Merges via "push" leave top=bottom so we must look at old patch
25 # in this case (unlike, eg., "pick --fold")
26 patchdir="$(git-rev-parse --git-dir)/patches/$(stg branch)/$(stg top)"
27 if [ $(cat "$patchdir/bottom") = $(cat "$patchdir/top") ];
28 then
29     current_cmd="stg show //top.old"
30 else
31     current_cmd="stg show"
32 fi
33
34 colordiff "$@" \
35     -I '^index [0-9a-b]*..[0-9a-b]*' \
36     -I '^@@ .* @@' \
37     <($current_cmd) <(stg diff -r//bottom) | less -RFX