Allow the rebase command to be defined
[stgit/ydirson.git] / contrib / stg-k
blob62211befd8894c5416f2929add0eaf1be7ae97bc
1 #!/bin/sh
2 set -e
4 # stg-k - execute given StGIT command while preserving local changes
6 # Uses a temporary patch to save local changes, then execute the given
7 # command, and restore local changes from the saved patch. In
8 # essence, "stg-k pop" is a "stg pop -k" that works better, hence its
9 # name.
11 # CAVEATS:
12 # - this script relies on the operation to run ignoring hidden
13 # patches, so in 0.12 (where "stg push" can push an hidden patch)
14 # "stg-k push" will fail midway, albeit with no information loss -
15 # you'll just have to finish manually. This is fixed in 0.13
16 # - running this script to pop all patches in the stack fails, since
17 # stg-unnew does not support this case.
19 # Copyright (c) 2007 Yann Dirson <ydirson@altern.org>
20 # Subject to the GNU GPL, version 2.
22 stg new __local -m " - local changes (internal patch)"
23 stg refresh
24 stg pop
26 # avoid bad interactions like "stg-k push" not behaving as expected
27 stg hide __local
29 stg "$@"
31 stg unhide __local
33 stg push __local
34 stg-unnew