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>
This commit is contained in:
Jon Seymour 2010-08-21 14:09:01 +10:00 committed by Junio C Hamano
parent f276872d89
commit fb433dc912

View file

@ -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 $stash^ &&
apply_stash --index $stash &&
drop_stash $stash
git checkout -b $branch $REV^ &&
apply_stash "$@"
test -z "$IS_STASH_REF" || drop_stash "$@"
}
PARSE_CACHE='--not-parsed'