[PATCH 2/5] Add contrib/stg-whatchanged: look at what would be changed by refreshing.
- From
Yann Dirson <ydirson@altern.org>
- Date
- Jan 4, 2007, 23:46 UTC
- Message-ID
- <20070104234647.13580.50428.stgit@gandelf.nowhere.earth>
- In-Reply-To
- <20070104233934.13580.17744.stgit@gandelf.nowhere.earth>
This script outputs a "metadiff" (diff of diffs, ie. diff between 2 versions of a single patch). This is somewhat a proof of concept, and some work is indeed needed in the way to present the results. Consider filtering the output at least through colordiff.
I have 2 uses for this script: - when simply editing a patch, provides a 3rd way to check what I've done before refreshing (in addition to "stg diff" and "stg diff -r //bottom") - most usefully, when resolving conflicts caused by a push, to ease checking of the merge result.
Signed-off-by: Yann Dirson <ydirson@altern.org> ---
contrib/stg-whatchanged | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/contrib/stg-whatchanged b/contrib/stg-whatchanged new file mode 100755 index 0000000..978749c --- /dev/null +++ b/contrib/stg-whatchanged @@ -0,0 +1,37 @@ +#!/bin/bash +set -e + +# stg-whatchanged - show a metadiff for the patch being modified, +# especially when resolving a merge. + +# Copyright (c) 2006-2007 Yann Dirson <ydirson@altern.org> +# Subject to the GNU GPL, version 2. + +# FIXME: +# - should only exclude hunk headers differing only in line offsets +# - diff coloring should show changes in context lines differently than +# changes in contents +# - filter on ^index lines is a bit wide +# - we should be able to ask diff to force a new hunk on "^@@ " to better +# handle them +# - we should always show the hunk header for any changes within a hunk + +# default to unified diff +if [ "$#" = 0 ]; then + set -- -u +fi + +# Merges via "push" leave top=bottom so we must look at old patch +# in this case (unlike, eg., "pick --fold") +patchdir="$(git-rev-parse --git-dir)/patches/$(stg branch)/$(stg top)" +if [ $(cat "$patchdir/bottom") = $(cat "$patchdir/top") ]; +then + current_cmd="stg-show-old" +else + current_cmd="stg show" +fi + +colordiff "$@" \ + -I '^index [0-9a-b]*..[0-9a-b]*' \ + -I '^@@ .* @@' \ + <($current_cmd) <(stg diff -r//bottom) | less -RFX