Merge branch 'gc/branch-recurse-submodules'
"git branch" learned the "--recurse-submodules" option. * gc/branch-recurse-submodules: branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks branch: add --recurse-submodules option for branch creation builtin/branch: consolidate action-picking logic in cmd_branch() branch: add a dry_run parameter to create_branch() branch: make create_branch() always create a branch branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
This commit is contained in:
@ -116,6 +116,9 @@ advice.*::
|
||||
submoduleAlternateErrorStrategyDie::
|
||||
Advice shown when a submodule.alternateErrorStrategy option
|
||||
configured to "die" causes a fatal error.
|
||||
submodulesNotUpdated::
|
||||
Advice shown when a user runs a submodule command that fails
|
||||
because `git submodule update --init` was not run.
|
||||
addIgnoredFile::
|
||||
Advice shown if a user attempts to add an ignored file to
|
||||
the index.
|
||||
|
@ -59,18 +59,33 @@ submodule.active::
|
||||
|
||||
submodule.recurse::
|
||||
A boolean indicating if commands should enable the `--recurse-submodules`
|
||||
option by default.
|
||||
Applies to all commands that support this option
|
||||
(`checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`, `reset`,
|
||||
`restore` and `switch`) except `clone` and `ls-files`.
|
||||
option by default. Defaults to false.
|
||||
+
|
||||
When set to true, it can be deactivated via the
|
||||
`--no-recurse-submodules` option. Note that some Git commands
|
||||
lacking this option may call some of the above commands affected by
|
||||
`submodule.recurse`; for instance `git remote update` will call
|
||||
`git fetch` but does not have a `--no-recurse-submodules` option.
|
||||
For these commands a workaround is to temporarily change the
|
||||
configuration value by using `git -c submodule.recurse=0`.
|
||||
+
|
||||
The following list shows the commands that accept
|
||||
`--recurse-submodules` and whether they are supported by this
|
||||
setting.
|
||||
|
||||
* `checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`,
|
||||
`reset`, `restore` and `switch` are always supported.
|
||||
* `clone` and `ls-files` are not supported.
|
||||
* `branch` is supported only if `submodule.propagateBranches` is
|
||||
enabled
|
||||
|
||||
submodule.propagateBranches::
|
||||
[EXPERIMENTAL] A boolean that enables branching support when
|
||||
using `--recurse-submodules` or `submodule.recurse=true`.
|
||||
Enabling this will allow certain commands to accept
|
||||
`--recurse-submodules` and certain commands that already accept
|
||||
`--recurse-submodules` will now consider branches.
|
||||
Defaults to false.
|
||||
When set to true, it can be deactivated via the
|
||||
`--no-recurse-submodules` option. Note that some Git commands
|
||||
lacking this option may call some of the above commands affected by
|
||||
`submodule.recurse`; for instance `git remote update` will call
|
||||
`git fetch` but does not have a `--no-recurse-submodules` option.
|
||||
For these commands a workaround is to temporarily change the
|
||||
configuration value by using `git -c submodule.recurse=0`.
|
||||
|
||||
submodule.fetchJobs::
|
||||
Specifies how many submodules are fetched/cloned at the same time.
|
||||
|
@ -16,7 +16,8 @@ SYNOPSIS
|
||||
[--points-at <object>] [--format=<format>]
|
||||
[(-r | --remotes) | (-a | --all)]
|
||||
[--list] [<pattern>...]
|
||||
'git branch' [--track[=(direct|inherit)] | --no-track] [-f] <branchname> [<start-point>]
|
||||
'git branch' [--track[=(direct|inherit)] | --no-track] [-f]
|
||||
[--recurse-submodules] <branchname> [<start-point>]
|
||||
'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
|
||||
'git branch' --unset-upstream [<branchname>]
|
||||
'git branch' (-m | -M) [<oldbranch>] <newbranch>
|
||||
@ -235,6 +236,22 @@ how the `branch.<name>.remote` and `branch.<name>.merge` options are used.
|
||||
Do not set up "upstream" configuration, even if the
|
||||
branch.autoSetupMerge configuration variable is set.
|
||||
|
||||
--recurse-submodules::
|
||||
THIS OPTION IS EXPERIMENTAL! Causes the current command to
|
||||
recurse into submodules if `submodule.propagateBranches` is
|
||||
enabled. See `submodule.propagateBranches` in
|
||||
linkgit:git-config[1]. Currently, only branch creation is
|
||||
supported.
|
||||
+
|
||||
When used in branch creation, a new branch <branchname> will be created
|
||||
in the superproject and all of the submodules in the superproject's
|
||||
<start-point>. In submodules, the branch will point to the submodule
|
||||
commit in the superproject's <start-point> but the branch's tracking
|
||||
information will be set up based on the submodule's branches and remotes
|
||||
e.g. `git branch --recurse-submodules topic origin/main` will create the
|
||||
submodule branch "topic" that points to the submodule commit in the
|
||||
superproject's "origin/main", but tracks the submodule's "origin/main".
|
||||
|
||||
--set-upstream::
|
||||
As this option had confusing syntax, it is no longer supported.
|
||||
Please use `--track` or `--set-upstream-to` instead.
|
||||
|
Reference in New Issue
Block a user