Re: [PATCH] Disconnect stash from its base commit
- From
- Abhijit Menon-Sen <ams@toroid.org>
- Date
- Jul 2, 2008, 19:54 UTC
- Message-ID
- <20080702195401.GA17214@toroid.org>
- In-Reply-To
- <7vvdzo9kkw.fsf@gitster.siamese.dyndns.org>
At 2008-07-02 12:01:35 -0700, gitster@pobox.com wrote:
> > But that imaginary "stash branch" command would always give you > the exact state you were in and creates a clean fork to finish > what you were doing, and continue.
Nice idea. Something as simple as the appended diff?
I reversed the stash/branch arguments so that one need specify only the branch name. Playing with it a little, it feels very useful.
-- ams
diff --git a/git-stash.sh b/git-stash.sh index 4938ade..d5ecd24 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -218,6 +218,21 @@ drop_stash () { git rev-parse --verify "$ref_stash@{0}" > /dev/null 2>&1 || clear_stash } +apply_to_branch () { + have_stash || die 'Nothing to apply' + + test -n "$1" || die 'No branch name specified' + branch=$1 + + if test -z "$2" + then + set x "$ref_stash@{0}" + fi + stash=$2 + + git-checkout -b $branch $stash^ && apply_stash $stash +} + # Main command set case "$1" in list) @@ -264,6 +279,10 @@ pop) drop_stash "$@" fi ;; +branch) + shift + apply_to_branch "$@" + ;; *) if test $# -eq 0 then