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

[PATCHv2] Documentation/config: clarify the meaning of submodule.<name>.update

From
Stefan Beller <sbeller@google.com>
Date
Sep 22, 2017, 22:52 UTC
Message-ID
<20170922225250.19705-1-sbeller@google.com>
In-Reply-To
<20170922213740.GL27425@aiede.mtv.corp.google.com>

With more commands (that potentially change a submodule) paying attention to submodules as well as the recent discussion[1] on submodule.<name>.update, let's spell out that submodule.<name>.update is strictly to be used for configuring the "submodule update" command and not to be obeyed by other commands.

These other commands usually have a strict meaning of what they should do (i.e. checkout, reset, rebase, merge) as well as have their name overlapping with the modes possible for submodule.<name>.update.

[1] https://public-inbox.org/git/4283F0B0-BC1C-4ED1-8126-7E512D84484B@gmail.com/
    submodule.<name>.update was set to "none", triggering unexpected
    behavior as the submodule was thought to never be touched.
    However a newer version of Git taught 'git pull --rebase' to also
    populate and rebase submodules if they were active.
    The newer options such as submodule.active and command specific
    flags would not have triggered unexpected behavior.
Reported-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
---
 Documentation/config.txt | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
Jonathan writes:
> You'll want to update Documentation/gitmodules.txt, too.
No. /grumpycat

It should already be fine, as I read it as if it is only relevant to "git submodule update" there, already:

  submodule.<name>.update::
	Defines the default update procedure for the named submodule,
	i.e. how the submodule is updated by "git submodule update"
	command in the superproject. This is only used by `git
	submodule init` to initialize the configuration variable of
	the same name. Allowed values here are 'checkout', 'rebase',
	'merge' or 'none'. See description of 'update' command in
	linkgit:git-submodule[1] for their meaning. Note that the
	'!command' form is intentionally ignored here for security
	reasons.
 
diff --git a/Documentation/config.txt b/Documentation/config.txt
index dc4e3f58a2..1ac0ae6adb 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -3085,10 +3085,14 @@ submodule.<name>.url::
 	See linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.
 
 submodule.<name>.update::
-	The default update procedure for a submodule. This variable
-	is populated by `git submodule init` from the
-	linkgit:gitmodules[5] file. See description of 'update'
-	command in linkgit:git-submodule[1].
+	The method by which a submodule is updated by 'git submodule update',
+	which is the only affected command, others such as
+	'git checkout --recurse-submodules' are unaffected. It exists for
+	historical reasons, when 'git submodule' was the only command to
+	interact with submodules; settings like `submodule.active`
+	and `pull.rebase` are more specific. It is populated by
+	`git submodule init` from the linkgit:gitmodules[5] file.
+	See description of 'update' command in linkgit:git-submodule[1].
 
 submodule.<name>.branch::
 	The remote branch name for a submodule, used by `git submodule
-- 
2.14.0.rc0.3.g6c2e499285
Previous: Jonathan NiederNext: Jonathan Nieder
Message 3 of 12 in “Documentation/config: clarify the meaning of submodule.<name>.update”
  1. Documentation/config: clarify the meaning of submodule.<name>.updateStefan Beller, Sep 22, 2017
  2. Jonathan NiederSep 22, 2017
  3. [PATCHv2] Documentation/config: clarify the meaning of submodule.<name>.updateStefan Beller, Sep 22, 2017
  4. Jonathan NiederSep 22, 2017
  5. Junio C HamanoSep 23, 2017
  6. Documentation: consolidate submodule.<name>.updateStefan Beller, Sep 25, 2017
  7. Brandon WilliamsSep 25, 2017
  8. Stefan BellerSep 25, 2017
  9. Jonathan NiederSep 25, 2017
  10. Stefan BellerSep 25, 2017
  11. Jonathan NiederSep 25, 2017
  12. Junio C HamanoSep 26, 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.