submodule: improve documentation of update subcommand
The documentation of 'git submodule update' has several problems: 1) It mentions that value 'none' of submodule.$name.update can be overridden by --checkout, but other combinations of configuration values and command line options are not mentioned. 2) The documentation of submodule.$name.update is scattered across three places, which is confusing. 3) The documentation of submodule.$name.update in gitmodules.txt is incorrect, because the code always uses the value from .git/config and never from .gitmodules. 4) Documentation of --force was incomplete, because it is only effective in case of checkout method of update. Fix all these problems by documenting submodule.*.update in git-submodule.txt and make everybody else refer to it. Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									76f8611a5f
								
							
						
					
					
						commit
						5c31acfbe2
					
				|  | @ -2303,12 +2303,16 @@ status.submodulesummary:: | ||||||
|  |  | ||||||
| submodule.<name>.path:: | submodule.<name>.path:: | ||||||
| submodule.<name>.url:: | submodule.<name>.url:: | ||||||
|  | 	The path within this project and URL for a submodule. These | ||||||
|  | 	variables are initially populated by 'git submodule init'. See | ||||||
|  | 	linkgit:git-submodule[1] and linkgit:gitmodules[5] for | ||||||
|  | 	details. | ||||||
|  |  | ||||||
| submodule.<name>.update:: | submodule.<name>.update:: | ||||||
| 	The path within this project, URL, and the updating strategy | 	The default update procedure for a submodule. This variable | ||||||
| 	for a submodule.  These variables are initially populated | 	is populated by `git submodule init` from the | ||||||
| 	by 'git submodule init'; edit them to override the | 	linkgit:gitmodules[5] file. See description of 'update' | ||||||
| 	URL and other values found in the `.gitmodules` file.  See | 	command in linkgit:git-submodule[1]. | ||||||
| 	linkgit:git-submodule[1] and linkgit:gitmodules[5] for details. |  | ||||||
|  |  | ||||||
| submodule.<name>.branch:: | submodule.<name>.branch:: | ||||||
| 	The remote branch name for a submodule, used by `git submodule | 	The remote branch name for a submodule, used by `git submodule | ||||||
|  |  | ||||||
|  | @ -154,27 +154,51 @@ If `--force` is specified, the submodule's work tree will be removed even if | ||||||
| it contains local modifications. | it contains local modifications. | ||||||
|  |  | ||||||
| update:: | update:: | ||||||
| 	Update the registered submodules, i.e. clone missing submodules and |  | ||||||
| 	checkout the commit specified in the index of the containing repository. |  | ||||||
| 	This will make the submodules HEAD be detached unless `--rebase` or |  | ||||||
| 	`--merge` is specified or the key `submodule.$name.update` is set to |  | ||||||
| 	`rebase`, `merge` or `none`. `none` can be overridden by specifying |  | ||||||
| 	`--checkout`. Setting the key `submodule.$name.update` to `!command` |  | ||||||
| 	will cause `command` to be run. `command` can be any arbitrary shell |  | ||||||
| 	command that takes a single argument, namely the sha1 to update to. |  | ||||||
| + | + | ||||||
|  | -- | ||||||
|  | Update the registered submodules to match what the superproject | ||||||
|  | expects by cloning missing submodules and updating the working tree of | ||||||
|  | the submodules. The "updating" can be done in several ways depending | ||||||
|  | on command line options and the value of `submodule.<name>.update` | ||||||
|  | configuration variable. Supported update procedures are: | ||||||
|  |  | ||||||
|  | 	checkout;; the commit recorded in the superproject will be | ||||||
|  | 	    checked out in the submodule on a detached HEAD. This is | ||||||
|  | 	    done when `--checkout` option is given, or no option is | ||||||
|  | 	    given, and `submodule.<name>.update` is unset, or if it is | ||||||
|  | 	    set to 'checkout'. | ||||||
|  | + | ||||||
|  | If `--force` is specified, the submodule will be checked out (using | ||||||
|  | `git checkout --force` if appropriate), even if the commit specified | ||||||
|  | in the index of the containing repository already matches the commit | ||||||
|  | checked out in the submodule. | ||||||
|  |  | ||||||
|  | 	rebase;; the current branch of the submodule will be rebased | ||||||
|  | 	    onto the commit recorded in the superproject. This is done | ||||||
|  | 	    when `--rebase` option is given, or no option is given, and | ||||||
|  | 	    `submodule.<name>.update` is set to 'rebase'. | ||||||
|  |  | ||||||
|  | 	merge;; the commit recorded in the superproject will be merged | ||||||
|  | 	    into the current branch in the submodule. This is done | ||||||
|  | 	    when `--merge` option is given, or no option is given, and | ||||||
|  | 	    `submodule.<name>.update` is set to 'merge'. | ||||||
|  |  | ||||||
|  | 	custom command;; arbitrary shell command that takes a single | ||||||
|  | 	    argument (the sha1 of the commit recorded in the | ||||||
|  | 	    superproject) is executed. This is done when no option is | ||||||
|  | 	    given, and `submodule.<name>.update` has the form of | ||||||
|  | 	    '!command'. | ||||||
|  |  | ||||||
|  | When no option is given and `submodule.<name>.update` is set to 'none', | ||||||
|  | the submodule is not updated. | ||||||
|  |  | ||||||
| If the submodule is not yet initialized, and you just want to use the | If the submodule is not yet initialized, and you just want to use the | ||||||
| setting as stored in .gitmodules, you can automatically initialize the | setting as stored in .gitmodules, you can automatically initialize the | ||||||
| submodule with the `--init` option. | submodule with the `--init` option. | ||||||
| + |  | ||||||
| If `--recursive` is specified, this command will recurse into the | If `--recursive` is specified, this command will recurse into the | ||||||
| registered submodules, and update any nested submodules within. | registered submodules, and update any nested submodules within. | ||||||
| + | -- | ||||||
| If `--force` is specified, the submodule will be checked out (using |  | ||||||
| `git checkout --force` if appropriate), even if the commit specified in the |  | ||||||
| index of the containing repository already matches the commit checked out in |  | ||||||
| the submodule. |  | ||||||
|  |  | ||||||
| summary:: | summary:: | ||||||
| 	Show commit summary between the given commit (defaults to HEAD) and | 	Show commit summary between the given commit (defaults to HEAD) and | ||||||
| 	working tree/index. For a submodule in question, a series of commits | 	working tree/index. For a submodule in question, a series of commits | ||||||
|  | @ -238,10 +262,12 @@ OPTIONS | ||||||
| 	When running add, allow adding an otherwise ignored submodule path. | 	When running add, allow adding an otherwise ignored submodule path. | ||||||
| 	When running deinit the submodule work trees will be removed even if | 	When running deinit the submodule work trees will be removed even if | ||||||
| 	they contain local changes. | 	they contain local changes. | ||||||
| 	When running update, throw away local changes in submodules when | 	When running update (only effective with the checkout procedure), | ||||||
| 	switching to a different commit; and always run a checkout operation | 	throw away local changes in submodules when switching to a | ||||||
| 	in the submodule, even if the commit listed in the index of the | 	different commit; and always run a checkout operation in the | ||||||
| 	containing repository matches the commit checked out in the submodule. | 	submodule, even if the commit listed in the index of the | ||||||
|  | 	containing repository matches the commit checked out in the | ||||||
|  | 	submodule. | ||||||
|  |  | ||||||
| --cached:: | --cached:: | ||||||
| 	This option is only valid for status and summary commands.  These | 	This option is only valid for status and summary commands.  These | ||||||
|  | @ -302,7 +328,7 @@ the submodule itself. | ||||||
| 	Checkout the commit recorded in the superproject on a detached HEAD | 	Checkout the commit recorded in the superproject on a detached HEAD | ||||||
| 	in the submodule. This is the default behavior, the main use of | 	in the submodule. This is the default behavior, the main use of | ||||||
| 	this option is to override `submodule.$name.update` when set to | 	this option is to override `submodule.$name.update` when set to | ||||||
| 	`merge`, `rebase` or `none`. | 	a value other than `checkout`. | ||||||
| 	If the key `submodule.$name.update` is either not explicitly set or | 	If the key `submodule.$name.update` is either not explicitly set or | ||||||
| 	set to `checkout`, this option is implicit. | 	set to `checkout`, this option is implicit. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @ -38,18 +38,15 @@ submodule.<name>.url:: | ||||||
| In addition, there are a number of optional keys: | In addition, there are a number of optional keys: | ||||||
|  |  | ||||||
| submodule.<name>.update:: | submodule.<name>.update:: | ||||||
| 	Defines what to do when the submodule is updated by the superproject. | 	Defines the default update procedure for the named submodule, | ||||||
| 	If 'checkout' (the default), the new commit specified in the | 	i.e. how the submodule is updated by "git submodule update" | ||||||
| 	superproject will be checked out in the submodule on a detached HEAD. | 	command in the superproject. This is only used by `git | ||||||
| 	If 'rebase', the current branch of the submodule will be rebased onto | 	submodule init` to initialize the configuration variable of | ||||||
| 	the commit specified in the superproject. If 'merge', the commit | 	the same name. Allowed values here are 'checkout', 'rebase', | ||||||
| 	specified in the superproject will be merged into the current branch | 	'merge' or 'none'. See description of 'update' command in | ||||||
| 	in the submodule. | 	linkgit:git-submodule[1] for their meaning. Note that the | ||||||
| 	If 'none', the submodule with name `$name` will not be updated | 	'!command' form is intentionally ignored here for security | ||||||
| 	by default. | 	reasons. | ||||||
|  |  | ||||||
| 	This config option is overridden if 'git submodule update' is given |  | ||||||
| 	the '--merge', '--rebase' or '--checkout' options. |  | ||||||
|  |  | ||||||
| submodule.<name>.branch:: | submodule.<name>.branch:: | ||||||
| 	A remote branch name for tracking updates in the upstream submodule. | 	A remote branch name for tracking updates in the upstream submodule. | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Michal Sojka
						Michal Sojka