0134c25f9c517808c1a34b5743aa9f54a12b29ef
[stgit] / contrib / stg-k
1 #!/bin/sh
2 set -e
3
4 # stg-k - execute given StGIT command while preserving local changes
5
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.
10
11 # CAVEAT: this script relies on the operation to run ignoring hidden
12 # patches, so in 0.12 (where "stg push" can push an hidden patch)
13 # "stg-k push" will fail midway, albeit with no information loss -
14 # you'll just have to finish manually. Luckilly this appears to work
15 # on master branch.
16
17 # Copyright (c) 2007 Yann Dirson <ydirson@altern.org>
18 # Subject to the GNU GPL, version 2.
19
20 stg new __local -m " - local changes (internal patch)"
21 stg refresh
22 stg pop
23
24 # avoid bad interactions like "stg-k push" not behaving as expected
25 stg hide __local
26
27 stg "$@"
28
29 stg unhide __local
30
31 stg push __local
32 stg-unnew