| 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)/patches/$(stg top)" |
| 27 | case $(stg log | head -n1) in |
| 28 | *push\(c\)*) former="//top.old" ;; |
| 29 | *) former="//top" ;; |
| 30 | esac |
| 31 | |
| 32 | stg-mdiff -o "$*" \ |
| 33 | $former //bottom.. |