git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v5 4/8] detached-stash: refactor git stash pop implementation

From
Jon Seymour <jon.seymour@gmail.com>
Date
Aug 18, 2010, 13:48 UTC
Message-ID
<1282139333-5150-1-git-send-email-jon.seymour@gmail.com>
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>
---
 git-stash.sh |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/git-stash.sh b/git-stash.sh
index 750f360..ac4c0f6 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -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
-- 
1.7.2.1.95.g4fabf
Next: Jon Seymour
Message 1 of 7 in “detached-stash: refactor git stash pop implementation”
  1. 4/8 detached-stash: refactor git stash pop implementationJon Seymour, Aug 18, 2010
  2. 5/8 detached-stash: simplify git stash branchJon Seymour, Aug 18, 2010
  3. 6/8 detached-stash: simplify git stash showJon Seymour, Aug 18, 2010
  4. 7/8 detached-stash: tests of git stash with stash-like argumentsJon Seymour, Aug 18, 2010
  5. Jon SeymourAug 18, 2010
  6. Johannes SixtAug 19, 2010
  7. 8/8 detached-stash: update DocumentationJon Seymour, Aug 18, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.