1
0
mirror of https://github.com/git/git.git synced 2024-10-21 04:39:25 +02:00
git/Documentation
Glen Choo 961b130d20 branch: add --recurse-submodules option for branch creation
To improve the submodules UX, we would like to teach Git to handle
branches in submodules. Start this process by teaching "git branch" the
--recurse-submodules option so that "git branch --recurse-submodules
topic" will create the `topic` branch in the superproject and its
submodules.

Although this commit does not introduce breaking changes, it does not
work well with existing --recurse-submodules commands because "git
branch --recurse-submodules" writes to the submodule ref store, but most
commands only consider the superproject gitlink and ignore the submodule
ref store. For example, "git checkout --recurse-submodules" will check
out the commits in the superproject gitlinks (and put the submodules in
detached HEAD) instead of checking out the submodule branches.

Because of this, this commit introduces a new configuration value,
`submodule.propagateBranches`. The plan is for Git commands to
prioritize submodule ref store information over superproject gitlinks if
this value is true. Because "git branch --recurse-submodules" writes to
submodule ref stores, for the sake of clarity, it will not function
unless this configuration value is set.

This commit also includes changes that support working with submodules
from a superproject commit because "branch --recurse-submodules" (and
future commands) need to read .gitmodules and gitlinks from the
superproject commit, but submodules are typically read from the
filesystem's .gitmodules and the index's gitlinks. These changes are:

* add a submodules_of_tree() helper that gives the relevant
  information of an in-tree submodule (e.g. path and oid) and
  initializes the repository
* add is_tree_submodule_active() by adding a treeish_name parameter to
  is_submodule_active()
* add the "submoduleNotUpdated" advice to advise users to update the
  submodules in their trees

Incidentally, fix an incorrect usage string that combined the 'list'
usage of git branch (-l) with the 'create' usage; this string has been
incorrect since its inception, a8dfd5eac4 (Make builtin-branch.c use
parse_options., 2007-10-07).

Helped-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Glen Choo <chooglen@google.com>
Reviewed-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-02-04 08:16:39 -08:00
..
config branch: add --recurse-submodules option for branch creation 2022-02-04 08:16:39 -08:00
howto
RelNotes The first batch to start the current cycle 2021-11-29 15:41:51 -08:00
technical Merge branch 'js/trace2-raise-format-version' 2021-11-12 15:29:25 -08:00
.gitattributes
.gitignore doc lint: make "lint-docs" non-.PHONY 2021-10-15 10:29:11 -07:00
asciidoc.conf
asciidoctor-extensions.rb
blame-options.txt Merge branch 'bs/doc-blame-color-lines' 2021-10-18 15:47:58 -07:00
build-docdep.perl
cat-texi.perl
cmd-list.perl
CodingGuidelines Merge branch 'ds/gender-neutral-doc-guidelines' 2021-07-28 13:18:02 -07:00
config.txt config.txt: fix typo 2021-10-25 09:12:56 -07:00
date-formats.txt
diff-format.txt Documentation/diff-format: state in which cases porcelain status is T 2021-10-04 13:07:18 -07:00
diff-generate-patch.txt
diff-options.txt Merge branch 'jn/log-m-does-not-imply-p' 2021-08-11 12:36:18 -07:00
doc-diff
docbook-xsl.css
docbook.xsl
everyday.txto
fetch-options.txt fetch: document the --negotiate-only option 2021-06-30 14:57:22 -07:00
fix-texi.perl
git-add.txt add: implement the --sparse option 2021-09-28 10:31:02 -07:00
git-am.txt git-am.txt: clarify --abort behavior 2021-09-10 15:51:14 -07:00
git-annotate.txt
git-apply.txt
git-archimport.txt
git-archive.txt archive: describe compression level option 2021-10-25 10:08:23 -07:00
git-bisect-lk2009.txt
git-bisect.txt
git-blame.txt Merge branch 'bs/doc-blame-color-lines' 2021-10-18 15:47:58 -07:00
git-branch.txt branch: add --recurse-submodules option for branch creation 2022-02-04 08:16:39 -08:00
git-bugreport.txt Documentation: fix default directory of git bugreport -o 2021-09-07 14:25:13 -07:00
git-bundle.txt git-bundle.txt: add missing words and punctuation 2021-10-27 17:06:12 -07:00
git-cat-file.txt cat-file: disable refs/replace with --batch-all-objects 2021-10-08 15:45:14 -07:00
git-check-attr.txt
git-check-ignore.txt
git-check-mailmap.txt
git-check-ref-format.txt
git-checkout-index.txt
git-checkout.txt branch,checkout: fix --track documentation 2022-01-20 11:07:51 -08:00
git-cherry-pick.txt
git-cherry.txt
git-citool.txt
git-clean.txt
git-clone.txt
git-column.txt column: fix parsing of the '--nl' option 2021-08-26 14:36:27 -07:00
git-commit-graph.txt
git-commit-tree.txt
git-commit.txt Document positive variant of commit and merge option "--no-verify" 2021-10-29 11:22:56 -07:00
git-config.txt doc: config, tell readers of git help --config 2021-09-13 14:51:07 -07:00
git-count-objects.txt
git-credential-cache--daemon.txt
git-credential-cache.txt
git-credential-store.txt
git-credential.txt
git-cvsexportcommit.txt
git-cvsimport.txt
git-cvsserver.txt Documentation: cleanup git-cvsserver 2021-09-16 20:47:48 -07:00
git-daemon.txt
git-describe.txt
git-diff-files.txt
git-diff-index.txt
git-diff-tree.txt
git-diff.txt git-diff: fix missing --merge-base docs 2021-07-12 13:55:29 -07:00
git-difftool.txt
git-fast-export.txt
git-fast-import.txt
git-fetch-pack.txt
git-fetch.txt Documentation: render special characters correctly 2021-07-30 09:08:12 -07:00
git-filter-branch.txt
git-fmt-merge-msg.txt
git-for-each-ref.txt ref-filter: --format=%(raw) support --perl 2021-07-26 12:01:25 -07:00
git-for-each-repo.txt
git-format-patch.txt format-patch (doc): clarify --base=auto 2021-10-23 14:33:20 -07:00
git-fsck-objects.txt
git-fsck.txt
git-gc.txt
git-get-tar-commit-id.txt
git-grep.txt
git-gui.txt
git-hash-object.txt
git-help.txt help: correct logic error in combining --all and --config 2021-09-23 10:30:43 -07:00
git-http-backend.txt docs/http-backend: mention v2 protocol 2021-09-10 15:34:59 -07:00
git-http-fetch.txt
git-http-push.txt
git-imap-send.txt
git-index-pack.txt index-pack: add --progress-title option 2021-09-07 10:59:23 -07:00
git-init-db.txt
git-init.txt
git-instaweb.txt
git-interpret-trailers.txt
git-log.txt
git-ls-files.txt
git-ls-remote.txt
git-ls-tree.txt
git-mailinfo.txt
git-mailsplit.txt
git-maintenance.txt maintenance: add support for systemd timers on Linux 2021-09-07 10:57:04 -07:00
git-merge-base.txt
git-merge-file.txt
git-merge-index.txt
git-merge-one-file.txt
git-merge-tree.txt
git-merge.txt pull: update docs & code for option compatibility with rebasing 2021-07-22 11:54:30 -07:00
git-mergetool--lib.txt
git-mergetool.txt
git-mktag.txt
git-mktree.txt
git-multi-pack-index.txt git-multi-pack-index.txt: change "folder" to "directory" 2021-10-25 11:06:56 -07:00
git-mv.txt
git-name-rev.txt
git-notes.txt
git-p4.txt
git-pack-objects.txt Merge branch 'jk/doc-max-pack-size' 2021-07-08 13:15:03 -07:00
git-pack-redundant.txt
git-pack-refs.txt
git-patch-id.txt
git-prune-packed.txt
git-prune.txt
git-pull.txt Merge branch 'js/retire-preserve-merges' 2021-10-18 15:47:56 -07:00
git-push.txt Merge branch 'ds/gender-neutral-doc' 2021-07-16 17:42:53 -07:00
git-quiltimport.txt
git-range-diff.txt
git-read-tree.txt Documentation: call out commands that nuke untracked files/directories 2021-09-27 13:38:37 -07:00
git-rebase.txt Merge branch 'js/retire-preserve-merges' 2021-10-18 15:47:56 -07:00
git-receive-pack.txt upload-pack: document and rename --advertise-refs 2021-08-05 08:59:37 -07:00
git-reflog.txt
git-remote-ext.txt
git-remote-fd.txt
git-remote-helpers.txto
git-remote.txt
git-repack.txt builtin/repack.c: make largest pack preferred 2021-09-28 21:20:56 -07:00
git-replace.txt
git-request-pull.txt
git-rerere.txt
git-reset.txt Documentation: call out commands that nuke untracked files/directories 2021-09-27 13:38:37 -07:00
git-restore.txt
git-rev-list.txt
git-rev-parse.txt
git-revert.txt
git-rm.txt rm: add --sparse option 2021-09-28 10:31:02 -07:00
git-send-email.txt send-email docs: add format-patch options 2021-10-28 09:06:15 -07:00
git-send-pack.txt send-pack: properly use parse_options() API for usage string 2021-09-12 18:57:30 -07:00
git-sh-i18n--envsubst.txt
git-sh-i18n.txt
git-sh-setup.txt
git-shell.txt
git-shortlog.txt
git-show-branch.txt
git-show-index.txt
git-show-ref.txt
git-show.txt
git-sparse-checkout.txt sparse-checkout: clear tracked sparse dirs 2021-09-07 22:41:10 -07:00
git-stage.txt
git-stash.txt stash: implement '--staged' option for 'push' and 'save' 2021-10-18 13:09:21 -07:00
git-status.txt status: print stash info with --porcelain=v2 --show-stash 2021-10-21 17:24:30 -07:00
git-stripspace.txt
git-submodule.txt
git-svn.txt git-svn: drop support for --preserve-merges 2021-09-07 21:45:33 -07:00
git-switch.txt branch: add flags and config to inherit tracking 2021-12-20 22:40:21 -08:00
git-symbolic-ref.txt
git-tag.txt
git-tools.txt
git-unpack-file.txt
git-unpack-objects.txt
git-update-index.txt
git-update-ref.txt
git-update-server-info.txt
git-upload-archive.txt
git-upload-pack.txt Merge branch 'jk/http-server-protocol-versions' 2021-09-23 13:44:47 -07:00
git-var.txt
git-verify-commit.txt
git-verify-pack.txt
git-verify-tag.txt
git-version.txt documentation: add documentation for 'git version' 2021-09-14 10:05:40 -07:00
git-web--browse.txt
git-whatchanged.txt
git-worktree.txt Merge branch 'sm/worktree-add-lock' 2021-07-28 13:17:58 -07:00
git-write-tree.txt
git.txt Merge branch 'ma/doc-git-version' 2021-10-29 15:43:14 -07:00
gitattributes.txt
gitcli.txt
gitcore-tutorial.txt
gitcredentials.txt
gitcvs-migration.txt
gitdiffcore.txt
giteveryday.txt
gitfaq.txt Update docs for change of default merge backend 2021-08-05 15:35:02 -07:00
gitglossary.txt
githooks.txt
gitignore.txt gitignore.txt: change "folder" to "directory" 2021-10-25 11:06:56 -07:00
gitk.txt
gitmailmap.txt
gitmodules.txt
gitnamespaces.txt
gitremote-helpers.txt
gitrepository-layout.txt
gitrevisions.txt
gitsubmodules.txt
gittutorial-2.txt
gittutorial.txt Documentation: render special characters correctly 2021-07-30 09:08:12 -07:00
gitweb.conf.txt
gitweb.txt gitweb.txt: change "folder" to "directory" 2021-10-25 11:06:57 -07:00
gitworkflows.txt
glossary-content.txt
howto-index.sh
i18n.txt
install-doc-quick.sh
install-webdoc.sh
line-range-format.txt
line-range-options.txt
lint-gitlink.perl doc lint: make "lint-docs" non-.PHONY 2021-10-15 10:29:11 -07:00
lint-man-end-blurb.perl doc lint: emit errors on STDERR 2021-10-15 10:16:57 -07:00
lint-man-section-order.perl doc lint: emit errors on STDERR 2021-10-15 10:16:57 -07:00
Makefile Merge branch 'ab/fix-make-lint-docs' 2021-10-29 15:43:13 -07:00
manpage-base-url.xsl.in
manpage-bold-literal.xsl
manpage-normal.xsl
manpage-quote-apos.xsl
manpage.xsl
merge-options.txt Document positive variant of commit and merge option "--no-verify" 2021-10-29 11:22:56 -07:00
merge-strategies.txt Update docs for change of default merge backend 2021-08-05 15:35:02 -07:00
MyFirstContribution.txt Merge branch 'jc/tutorial-format-patch-base' 2021-11-29 15:41:46 -08:00
MyFirstObjectWalk.txt Merge branch 'es/walken-tutorial-fix' into maint 2021-10-12 13:51:29 -07:00
object-format-disclaimer.txt
pretty-formats.txt
pretty-options.txt log: document --encoding behavior on iconv() failure 2021-10-29 14:35:59 -07:00
pull-fetch-param.txt
ref-reachability-filters.txt
rev-list-description.txt
rev-list-options.txt Revert "connected: do not sort input revisions" 2021-11-11 12:34:41 -08:00
revisions.txt
sequencer.txt
signoff-option.txt
SubmittingPatches SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section 2021-11-13 23:41:54 -08:00
texi.xsl
trace2-target-values.txt
transfer-data-leaks.txt
urls-remotes.txt
urls.txt
user-manual.conf
user-manual.txt Update docs for change of default merge backend 2021-08-05 15:35:02 -07:00