Skip to content

Commit

Permalink
detached-stash: refactor git stash pop implementation
Browse files Browse the repository at this point in the history
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 <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jon Seymour authored and Junio C Hamano committed Aug 22, 2010
1 parent 92e39e4 commit f276872
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions git-stash.sh
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,13 @@ apply_stash () {
fi
}

pop_stash() {
assert_stash_ref "$@"

apply_stash "$@" &&
drop_stash "$@"
}

drop_stash () {
assert_stash_ref "$@"

Expand Down Expand Up @@ -498,10 +505,7 @@ drop)
;;
pop)
shift
if apply_stash "$@"
then
drop_stash "$applied_stash"
fi
pop_stash "$@"
;;
branch)
shift
Expand Down

0 comments on commit f276872

Please sign in to comment.