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

[PATCH v2] stash: avoid recursive hard reset on submodules

From
Jakob Jarmar <jakob.j@gmail.com>
Date
Oct 11, 2019, 00:11 UTC
Message-ID
<20191011001114.GB640501@OJAN-PAAVO.localdomain>
In-Reply-To
<CA+xNDHtVc7pJr=SdihKDKiLE9TE_TcpEWWmPq+N9+fFcfM36wA@mail.gmail.com>

git stash push does not recursively stash submodules, but if submodule.recurse is set, it may recursively reset --hard them. Having only the destructive action recurse is likely to be surprising behaviour, and unlikely to be desirable, so the easiest fix should be to ensure that the call to git reset --hard never recurses into submodules.

This matches the behavior of check_changes_tracked_files, which ignores submodules.

Signed-off-by: Jakob Jarmar <jakob@jarmar.se>
---

Sorry for sending a patch with messed up whitespace. This one should be correct.

 builtin/stash.c     | 2 +-
 git-legacy-stash.sh | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/builtin/stash.c b/builtin/stash.c
index b5a301f24d..c986c258f2 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -1383,7 +1383,7 @@ static int do_push_stash(const struct pathspec *ps, const char *stash_msg, int q
 			struct child_process cp = CHILD_PROCESS_INIT;
 			cp.git_cmd = 1;
 			argv_array_pushl(&cp.args, "reset", "--hard", "-q",
-					 NULL);
+					 "--no-recurse-submodules", NULL);
 			if (run_command(&cp)) {
 				ret = -1;
 				goto done;
diff --git a/git-legacy-stash.sh b/git-legacy-stash.sh
index f60e9b3e87..07ad4a5459 100755
--- a/git-legacy-stash.sh
+++ b/git-legacy-stash.sh
@@ -370,7 +370,7 @@ push_stash () {
 			git diff-index -p --cached --binary HEAD -- "$@" |
 			git apply --index -R
 		else
-			git reset --hard -q
+			git reset --hard -q --no-recurse-submodules
 		fi
 
 		if test "$keep_index" = "t" && test -n "$i_tree"
-- 
2.23.0
Previous: Jakob JarmarNext: Junio C Hamano
Message 2 of 8 in “stash: avoid recursive hard reset on submodules”
  1. stash: avoid recursive hard reset on submodulesJakob Jarmar, Oct 10, 2019
  2. stash: avoid recursive hard reset on submodulesJakob Jarmar, Oct 11, 2019
  3. Junio C HamanoOct 11, 2019
  4. stash: avoid recursive hard reset on submodulesJakob Jarmar, Oct 11, 2019
  5. Junio C HamanoOct 12, 2019
  6. Jakob JarmarOct 12, 2019
  7. stash: avoid recursive hard reset on submodulesJakob Jarmar, Oct 12, 2019
  8. Junio C HamanoOct 15, 2019

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.