New contrib scripts: stg-dispatch and stg-show.
[stgit] / contrib / stg-fold-files-from
CommitLineData
ed239fbd
YD
1#!/bin/sh
2set -e
3
4# stg-fold-files-from - picks changes to one file from another patch.
36c0e9cc 5# Only supports picking from one file pattern, but allows to select any range
ed239fbd
YD
6# of hunks from the file, using the -# flag to filterdiff.
7# Use together with "filterdiff --annotate" in your diff pager, to
8# identify hunk numbers easily.
9
36c0e9cc 10# usage: stg-fold-files-from <patch> [-#<n>[-<n>][,<n>]...] <file-pattern>
ed239fbd
YD
11
12# Copyright (c) 2006-2007 Yann Dirson <ydirson@altern.org>
13# Subject to the GNU GPL, version 2.
14
15PATCH="$1"
16shift
17
18filtercmd=cat
19hunks=
20foldflags=
21while [ "$#" -gt 0 ]; do
22 case "$1" in
23 -\#*) hunks="$1"; shift ;;
24 -t) foldflags="-t"; shift ;;
25 -*) { echo >&2 "unknown flag '$1'"; exit 1; } ;;
26 *) break ;;
27 esac
28done
29[ "$#" = 1 ] || { echo >&2 "supports one file only"; exit 1; }
30
31stg show "$PATCH" | filterdiff -p1 $hunks -i "$1" | stg fold $foldflags