Skip to content

Commit f276872

Browse files
jonseymourgitster
authored andcommitted
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: Jon Seymour <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 92e39e4 commit f276872

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

git-stash.sh

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,13 @@ apply_stash () {
423423
fi
424424
}
425425

426+
pop_stash() {
427+
assert_stash_ref "$@"
428+
429+
apply_stash "$@" &&
430+
drop_stash "$@"
431+
}
432+
426433
drop_stash () {
427434
assert_stash_ref "$@"
428435

@@ -498,10 +505,7 @@ drop)
498505
;;
499506
pop)
500507
shift
501-
if apply_stash "$@"
502-
then
503-
drop_stash "$applied_stash"
504-
fi
508+
pop_stash "$@"
505509
;;
506510
branch)
507511
shift

0 commit comments

Comments
 (0)