| #!/bin/sh |
| set -e |
| |
| # stg-k - execute given StGIT command while preserving local changes |
| |
| # Uses a temporary patch to save local changes, then execute the given |
| # command, and restore local changes from the saved patch. In |
| # essence, "stg-k pop" is a "stg pop -k" that works better, hence its |
| # name. |
| |
| # CAVEATS: |
| # - this script relies on the operation to run ignoring hidden |
| # patches, so in 0.12 (where "stg push" can push an hidden patch) |
| # "stg-k push" will fail midway, albeit with no information loss - |
| # you'll just have to finish manually. This is fixed in 0.13 |
| # - running this script to pop all patches in the stack fails, since |
| # stg-unnew does not support this case. |
| |
| # Copyright (c) 2007 Yann Dirson <ydirson@altern.org> |
| # Subject to the GNU GPL, version 2. |
| |
| stg new __local -m " - local changes (internal patch)" |
| stg refresh |
| stg pop |
| |
| # avoid bad interactions like "stg-k push" not behaving as expected |
| stg hide __local |
| |
| stg "$@" |
| |
| stg unhide __local |
| |
| stg push __local |
| stg-unnew |