Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 1 | gitmodules(5) |
| 2 | ============= |
| 3 | |
| 4 | NAME |
| 5 | ---- |
Junio C Hamano | c9cb517 | 2018-06-01 07:13:44 | [diff] [blame] | 6 | gitmodules - Defining submodule properties |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 7 | |
| 8 | SYNOPSIS |
| 9 | -------- |
Junio C Hamano | 17bd227 | 2008-09-01 06:11:17 | [diff] [blame] | 10 | $GIT_WORK_DIR/.gitmodules |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 11 | |
| 12 | |
| 13 | DESCRIPTION |
| 14 | ----------- |
| 15 | |
Junio C Hamano | 076ffcc | 2013-02-06 05:13:21 | [diff] [blame] | 16 | The `.gitmodules` file, located in the top-level directory of a Git |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 17 | working tree, is a text file with a syntax matching the requirements |
Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 18 | of linkgit:git-config[1]. |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 19 | |
| 20 | The file contains one subsection per submodule, and the subsection value |
Junio C Hamano | a129545 | 2012-11-13 22:32:04 | [diff] [blame] | 21 | is the name of the submodule. The name is set to the path where the |
Junio C Hamano | 92d8037 | 2016-07-13 22:00:05 | [diff] [blame] | 22 | submodule has been added unless it was customized with the `--name` |
Junio C Hamano | a129545 | 2012-11-13 22:32:04 | [diff] [blame] | 23 | option of 'git submodule add'. Each submodule section also contains the |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 24 | following required keys: |
| 25 | |
| 26 | submodule.<name>.path:: |
Junio C Hamano | 076ffcc | 2013-02-06 05:13:21 | [diff] [blame] | 27 | Defines the path, relative to the top-level directory of the Git |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 28 | working tree, where the submodule is expected to be checked out. |
| 29 | The path name must not end with a `/`. All submodule paths must |
| 30 | be unique within the .gitmodules file. |
| 31 | |
| 32 | submodule.<name>.url:: |
Junio C Hamano | 0ff9816 | 2012-03-31 18:19:09 | [diff] [blame] | 33 | Defines a URL from which the submodule repository can be cloned. |
Junio C Hamano | 78e3a78 | 2010-07-15 22:24:45 | [diff] [blame] | 34 | This may be either an absolute URL ready to be passed to |
| 35 | linkgit:git-clone[1] or (if it begins with ./ or ../) a location |
| 36 | relative to the superproject's origin repository. |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 37 | |
Junio C Hamano | 9906f1f | 2014-01-06 22:24:17 | [diff] [blame] | 38 | In addition, there are a number of optional keys: |
| 39 | |
Junio C Hamano | 25e7ba6 | 2009-06-14 01:03:22 | [diff] [blame] | 40 | submodule.<name>.update:: |
Junio C Hamano | 6bf68cf | 2015-03-06 23:46:29 | [diff] [blame] | 41 | Defines the default update procedure for the named submodule, |
| 42 | i.e. how the submodule is updated by "git submodule update" |
| 43 | command in the superproject. This is only used by `git |
| 44 | submodule init` to initialize the configuration variable of |
| 45 | the same name. Allowed values here are 'checkout', 'rebase', |
| 46 | 'merge' or 'none'. See description of 'update' command in |
Junio C Hamano | 59e8824 | 2019-12-10 14:09:04 | [diff] [blame] | 47 | linkgit:git-submodule[1] for their meaning. For security |
| 48 | reasons, the '!command' form is not accepted here. |
Junio C Hamano | 25e7ba6 | 2009-06-14 01:03:22 | [diff] [blame] | 49 | |
Junio C Hamano | abad6da | 2013-01-06 09:06:32 | [diff] [blame] | 50 | submodule.<name>.branch:: |
| 51 | A remote branch name for tracking updates in the upstream submodule. |
Junio C Hamano | a891178 | 2020-07-07 05:35:57 | [diff] [blame] | 52 | If the option is not specified, it defaults to the remote 'HEAD'. |
| 53 | A special value of `.` is used to indicate that the name of the branch |
| 54 | in the submodule should be the same name as the current branch in the |
Junio C Hamano | 4a401d5 | 2016-10-26 22:24:37 | [diff] [blame] | 55 | current repository. See the `--remote` documentation in |
| 56 | linkgit:git-submodule[1] for details. |
Junio C Hamano | abad6da | 2013-01-06 09:06:32 | [diff] [blame] | 57 | |
Junio C Hamano | 0d75e87 | 2010-12-17 06:57:26 | [diff] [blame] | 58 | submodule.<name>.fetchRecurseSubmodules:: |
Junio C Hamano | 5cd1518 | 2011-04-05 00:21:10 | [diff] [blame] | 59 | This option can be used to control recursive fetching of this |
Junio C Hamano | 0d75e87 | 2010-12-17 06:57:26 | [diff] [blame] | 60 | submodule. If this option is also present in the submodules entry in |
| 61 | .git/config of the superproject, the setting there will override the |
| 62 | one found in .gitmodules. |
Junio C Hamano | 7165bf7 | 2011-01-04 22:06:18 | [diff] [blame] | 63 | Both settings can be overridden on the command line by using the |
Junio C Hamano | 5cd1518 | 2011-04-05 00:21:10 | [diff] [blame] | 64 | "--[no-]recurse-submodules" option to "git fetch" and "git pull". |
Junio C Hamano | 0d75e87 | 2010-12-17 06:57:26 | [diff] [blame] | 65 | |
Junio C Hamano | 619596a | 2010-08-18 22:15:35 | [diff] [blame] | 66 | submodule.<name>.ignore:: |
| 67 | Defines under what circumstances "git status" and the diff family show |
Junio C Hamano | beca340 | 2017-04-27 02:21:51 | [diff] [blame] | 68 | a submodule as modified. The following values are supported: |
Junio C Hamano | 94d00a5 | 2018-10-30 07:34:40 | [diff] [blame] | 69 | + |
| 70 | -- |
Junio C Hamano | beca340 | 2017-04-27 02:21:51 | [diff] [blame] | 71 | all;; The submodule will never be considered modified (but will |
| 72 | nonetheless show up in the output of status and commit when it has |
| 73 | been staged). |
| 74 | |
| 75 | dirty;; All changes to the submodule's work tree will be ignored, only |
| 76 | committed differences between the HEAD of the submodule and its |
| 77 | recorded state in the superproject are taken into account. |
| 78 | |
| 79 | untracked;; Only untracked files in submodules will be ignored. |
| 80 | Committed differences and modifications to tracked files will show |
| 81 | up. |
| 82 | |
Junio C Hamano | 8ef91f3 | 2019-12-01 22:58:27 | [diff] [blame] | 83 | none;; No modifications to submodules are ignored, all of committed |
Junio C Hamano | beca340 | 2017-04-27 02:21:51 | [diff] [blame] | 84 | differences, and modifications to tracked and untracked files are |
| 85 | shown. This is the default option. |
| 86 | |
Junio C Hamano | 94d00a5 | 2018-10-30 07:34:40 | [diff] [blame] | 87 | If this option is also present in the submodules entry in .git/config |
| 88 | of the superproject, the setting there will override the one found in |
| 89 | .gitmodules. |
| 90 | |
| 91 | Both settings can be overridden on the command line by using the |
Junio C Hamano | 48cd3f1 | 2019-10-09 05:55:30 | [diff] [blame] | 92 | "--ignore-submodules" option. The 'git submodule' commands are not |
Junio C Hamano | 94d00a5 | 2018-10-30 07:34:40 | [diff] [blame] | 93 | affected by this setting. |
| 94 | -- |
Junio C Hamano | 619596a | 2010-08-18 22:15:35 | [diff] [blame] | 95 | |
Junio C Hamano | e548d1b | 2016-08-08 22:26:49 | [diff] [blame] | 96 | submodule.<name>.shallow:: |
| 97 | When set to true, a clone of this submodule will be performed as a |
Junio C Hamano | beca340 | 2017-04-27 02:21:51 | [diff] [blame] | 98 | shallow clone (with a history depth of 1) unless the user explicitly |
| 99 | asks for a non-shallow clone. |
Junio C Hamano | e548d1b | 2016-08-08 22:26:49 | [diff] [blame] | 100 | |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 101 | |
| 102 | EXAMPLES |
| 103 | -------- |
| 104 | |
| 105 | Consider the following .gitmodules file: |
| 106 | |
Junio C Hamano | 48cd3f1 | 2019-10-09 05:55:30 | [diff] [blame] | 107 | ---- |
| 108 | [submodule "libfoo"] |
| 109 | path = include/foo |
| 110 | url = git://foo.com/git/lib.git |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 111 | |
Junio C Hamano | 48cd3f1 | 2019-10-09 05:55:30 | [diff] [blame] | 112 | [submodule "libbar"] |
| 113 | path = include/bar |
| 114 | url = git://bar.com/git/lib.git |
| 115 | ---- |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 116 | |
| 117 | This defines two submodules, `libfoo` and `libbar`. These are expected to |
Junio C Hamano | b551377 | 2019-04-22 03:38:39 | [diff] [blame] | 118 | be checked out in the paths `include/foo` and `include/bar`, and for both |
Junio C Hamano | 0ff9816 | 2012-03-31 18:19:09 | [diff] [blame] | 119 | submodules a URL is specified which can be used for cloning the submodules. |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 120 | |
| 121 | SEE ALSO |
| 122 | -------- |
Junio C Hamano | 2f5a989 | 2019-12-25 21:12:55 | [diff] [blame] | 123 | linkgit:git-submodule[1], linkgit:gitsubmodules[7], linkgit:git-config[1] |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 124 | |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 125 | GIT |
| 126 | --- |
Junio C Hamano | f7c042d | 2008-06-06 22:50:53 | [diff] [blame] | 127 | Part of the linkgit:git[1] suite |