[PATCH v5 3/8] detached-stash: simplify stash_drop
- From
Jon Seymour <jon.seymour@gmail.com>
- Date
- Aug 18, 2010, 13:09 UTC
- Message-ID
- <1282136980-25793-4-git-send-email-jon.seymour@gmail.com>
- In-Reply-To
- <1282136980-25793-1-git-send-email-jon.seymour@gmail.com>
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> --- git-stash.sh | 31 +++---------------------------- 1 files changed, 3 insertions(+), 28 deletions(-)
diff --git a/git-stash.sh b/git-stash.sh index ba68f1e..750f360 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
-- 1.7.2.1.95.g4fabf