提交 f276872d 编写于 作者: J Jon Seymour 提交者: Junio C Hamano

detached-stash: refactor git stash pop implementation

git stash pop is abstracted into its own implementation function - pop_stash.

The behaviour is changed so that git stash pop fails early if the
the specified stash reference does not exist or does not refer to
an extant entry in the reflog of the reference stash.

This fixes the case where the apply succeeds, but the drop fails.
Previously this caused caused git stash pop to exit with a non-zero exit code
and a dirty tree.

Now, git stash pop fails with a non-zero exit code, but the working
tree is not modified.
Signed-off-by: NJon Seymour <jon.seymour@gmail.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 92e39e44
......@@ -423,6 +423,13 @@ apply_stash () {
fi
}
pop_stash() {
assert_stash_ref "$@"
apply_stash "$@" &&
drop_stash "$@"
}
drop_stash () {
assert_stash_ref "$@"
......@@ -498,10 +505,7 @@ drop)
;;
pop)
shift
if apply_stash "$@"
then
drop_stash "$applied_stash"
fi
pop_stash "$@"
;;
branch)
shift
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册