diff options
author | Jon Seymour <jon.seymour@gmail.com> | 2010-08-21 14:09:01 +1000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-08-21 23:51:21 -0700 |
commit | fb433dc912ffb64364571750bedde988f29e736b (patch) | |
tree | 5f9a3e914b83bf70f9ffb4c88173b5971940bb13 /git-stash.sh | |
parent | f276872d89c19c07a4035bc41e4b26523dd3b003 (diff) | |
download | git-fb433dc912ffb64364571750bedde988f29e736b.tar.gz |
detached-stash: simplify git stash branch
This patch teaches git stash branch to tolerate stash-like arguments.
In particular, a stash is only required if an argument isn't specified
and the stash is only dropped if a stash entry reference was
specified or implied.
The implementation has been simplified by taking advantage of
assert_stash_like() and the variables established by
parse_flags_and_rev().
Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-stash.sh')
-rwxr-xr-x | git-stash.sh | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/git-stash.sh b/git-stash.sh index ac4c0f69cf..ff1edc918b 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -441,20 +441,17 @@ drop_stash () { } apply_to_branch () { - have_stash || die 'Nothing to apply' - test -n "$1" || die 'No branch name specified' branch=$1 + shift 1 - if test -z "$2" - then - set x "$ref_stash@{0}" - fi - stash=$2 + set -- --index "$@" + assert_stash_like "$@" + + git checkout -b $branch $REV^ && + apply_stash "$@" - git checkout -b $branch $stash^ && - apply_stash --index $stash && - drop_stash $stash + test -z "$IS_STASH_REF" || drop_stash "$@" } PARSE_CACHE='--not-parsed' |