diff options
author | Jon Seymour <jon.seymour@gmail.com> | 2010-08-21 08:08:59 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-08-22 10:51:21 +0400 |
commit | 92e39e44542b34923294fbb45069b8140d19976d (patch) | |
tree | 71c75f4cadf4aaea6b0df158b2ef58984db0bdec | |
parent | 064ed100b2b3530c4b8c4534aa663d2455b735da (diff) |
detached-stash: simplify stash_drop
Previously, git stash drop would fail noisily while executing git reflog
delete if the specified revision was not a stash reference.
Now, git stash drop fails with an error message which more precisely
indicates the reason for failure.
Furthermore, git stash drop will now fail with a non-zero status code
if stash@{n} specifies a stash log entry that does not actually exist.
This change in behaviour is achieved by delegating argument parsing
to the common parse_flags_and_rev() function (via a call to
assert_stash_ref).
Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-stash.sh | 31 |
1 files changed, 3 insertions, 28 deletions
diff --git a/git-stash.sh b/git-stash.sh index ba68f1e4a3..750f360da9 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -424,35 +424,10 @@ apply_stash () { } drop_stash () { - have_stash || die 'No stash entries to drop' + assert_stash_ref "$@" - while test $# != 0 - do - case "$1" in - -q|--quiet) - GIT_QUIET=t - ;; - *) - break - ;; - esac - shift - done - - if test $# = 0 - then - set x "$ref_stash@{0}" - shift - fi - # Verify supplied argument looks like a stash entry - s=$(git rev-parse --verify "$@") && - git rev-parse --verify "$s:" > /dev/null 2>&1 && - git rev-parse --verify "$s^1:" > /dev/null 2>&1 && - git rev-parse --verify "$s^2:" > /dev/null 2>&1 || - die "$*: not a valid stashed state" - - git reflog delete --updateref --rewrite "$@" && - say "Dropped $* ($s)" || die "$*: Could not drop stash entry" + git reflog delete --updateref --rewrite "${REV}" && + say "Dropped ${REV} ($s)" || die "${REV}: Could not drop stash entry" # clear_stash if we just dropped the last stash entry git rev-parse --verify "$ref_stash@{0}" > /dev/null 2>&1 || clear_stash |