chiark / gitweb /
Add contrib/stg-whatchanged: look at what would be changed by refreshing.
[stgit] / contrib / stg-whatchanged
CommitLineData
a3e45643
YD
1#!/bin/bash
2set -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
20if [ "$#" = 0 ]; then
21 set -- -u
22fi
23
24# Merges via "push" leave top=bottom so we must look at old patch
25# in this case (unlike, eg., "pick --fold")
26patchdir="$(git-rev-parse --git-dir)/patches/$(stg branch)/$(stg top)"
27if [ $(cat "$patchdir/bottom") = $(cat "$patchdir/top") ];
28then
29 current_cmd="stg show //top.old"
30else
31 current_cmd="stg show"
32fi
33
34colordiff "$@" \
35 -I '^index [0-9a-b]*..[0-9a-b]*' \
36 -I '^@@ .* @@' \
37 <($current_cmd) <(stg diff -r//bottom) | less -RFX