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

[PATCHv2 6/6] builtin/push.c: respect 'submodule.recurse' option

From
Stefan Beller <sbeller@google.com>
Date
May 22, 2017, 19:48 UTC
Message-ID
<20170522194806.13568-7-sbeller@google.com>
In-Reply-To
<20170522194806.13568-1-sbeller@google.com>

The closest mapping from the boolean 'submodule.recurse' set to "yes" to the variety of submodule push modes is "on-demand", so implement that.

Signed-off-by: Stefan Beller <sbeller@google.com>
---
 builtin/push.c                 |  4 ++++
 t/t5531-deep-submodule-push.sh | 21 +++++++++++++++++++++
 2 files changed, 25 insertions(+)
diff --git a/builtin/push.c b/builtin/push.c
index 5c22e9f2e5..fcf66b3bec 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -498,6 +498,10 @@ static int git_push_config(const char *k, const char *v, void *cb)
 		const char *value;
 		if (!git_config_get_value("push.recursesubmodules", &value))
 			recurse_submodules = parse_push_recurse_submodules_arg(k, value);
+	} else if (!strcmp(k, "submodule.recurse")) {
+		int val = git_config_bool(k, v) ?
+			RECURSE_SUBMODULES_ON_DEMAND : RECURSE_SUBMODULES_OFF;
+		recurse_submodules = val;
 	}
 
 	return git_default_config(k, v, NULL);
diff --git a/t/t5531-deep-submodule-push.sh b/t/t5531-deep-submodule-push.sh
index f55137f76f..97c1f14f6b 100755
--- a/t/t5531-deep-submodule-push.sh
+++ b/t/t5531-deep-submodule-push.sh
@@ -126,6 +126,27 @@ test_expect_success 'push succeeds if submodule commit not on remote but using o
 	)
 '
 
+test_expect_success 'push succeeds if submodule commit not on remote but using auto-on-demand via submodule.recurse config' '
+	(
+		cd work/gar/bage &&
+		>recurse-on-demand-from-submodule-recurse-config &&
+		git add recurse-on-demand-from-submodule-recurse-config &&
+		git commit -m "Recurse submodule.recurse from config junk"
+	) &&
+	(
+		cd work &&
+		git add gar/bage &&
+		git commit -m "Recurse submodule.recurse from config for gar/bage" &&
+		git -c submodule.recurse push ../pub.git master &&
+		# Check that the supermodule commit got there
+		git fetch ../pub.git &&
+		git diff --quiet FETCH_HEAD master &&
+		# Check that the submodule commit got there too
+		cd gar/bage &&
+		git diff --quiet origin/master master
+	)
+'
+
 test_expect_success 'push recurse-submodules on command line overrides config' '
 	(
 		cd work/gar/bage &&
-- 
2.13.0.18.g7d86cc8ba0
Previous: Stefan BellerNext: Stefan Beller
Message 8 of 11 in “[PATCHv2 0/6] Add option to recurse into submodules”
  1. Stefan BellerMay 22, 2017
  2. 3/6 Introduce submodule.recurse option for worktree manipulatorsStefan Beller, May 22, 2017
  3. 2/6 submodule test invocation: only pass additional argumentsStefan Beller, May 22, 2017
  4. Junio C HamanoMay 23, 2017
  5. Stefan BellerMay 23, 2017
  6. 5/6 builtin/grep.c: respect 'submodule.recurse' optionStefan Beller, May 22, 2017
  7. 4/6 builtin/fetch.c: respect 'submodule.recurse' optionStefan Beller, May 22, 2017
  8. 6/6 builtin/push.c: respect 'submodule.recurse' optionStefan Beller, May 22, 2017
  9. 1/6 submodule.c: add has_submodules to check if we have any submodulesStefan Beller, May 22, 2017
  10. Brandon WilliamsMay 23, 2017
  11. Stefan BellerMay 23, 2017

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.