mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
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>
This commit is contained in:
parent
064ed100b2
commit
92e39e4454
31
git-stash.sh
31
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
|
||||
|
|
Loading…
Reference in a new issue