#!/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 # 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 //top.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