blob: 67275fd187f0f8f60f608e17334da12b6272394f [file] [log] [blame]
Lars Hjemli891dbc62007-06-12 09:05:21 +02001gitmodules(5)
2=============
3
4NAME
5----
Nguyễn Thái Ngọc Duy1b81d8c2018-05-20 20:40:02 +02006gitmodules - Defining submodule properties
Lars Hjemli891dbc62007-06-12 09:05:21 +02007
8SYNOPSIS
9--------
Gustaf Hendebye5b5c1d2008-08-31 18:00:27 +020010$GIT_WORK_DIR/.gitmodules
Lars Hjemli891dbc62007-06-12 09:05:21 +020011
12
13DESCRIPTION
14-----------
15
Thomas Ackermann2de9b712013-01-21 20:17:53 +010016The `.gitmodules` file, located in the top-level directory of a Git
Lars Hjemli891dbc62007-06-12 09:05:21 +020017working tree, is a text file with a syntax matching the requirements
Dan McGee5162e692007-12-29 00:20:38 -060018of linkgit:git-config[1].
Lars Hjemli891dbc62007-06-12 09:05:21 +020019
20The file contains one subsection per submodule, and the subsection value
Jens Lehmann73b08982012-09-30 01:05:58 +020021is the name of the submodule. The name is set to the path where the
Matthieu Moybcf96262016-06-28 13:40:11 +020022submodule has been added unless it was customized with the `--name`
Jens Lehmann73b08982012-09-30 01:05:58 +020023option of 'git submodule add'. Each submodule section also contains the
Lars Hjemli891dbc62007-06-12 09:05:21 +020024following required keys:
25
26submodule.<name>.path::
Thomas Ackermann2de9b712013-01-21 20:17:53 +010027 Defines the path, relative to the top-level directory of the Git
Lars Hjemli891dbc62007-06-12 09:05:21 +020028 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
32submodule.<name>.url::
Jim Meyeringa7793a72012-03-28 10:41:54 +020033 Defines a URL from which the submodule repository can be cloned.
Jonathan Nieder47dc5d52010-07-15 02:41:55 -050034 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.
Lars Hjemli891dbc62007-06-12 09:05:21 +020037
W. Trevor King43fda942014-01-03 10:31:22 -080038In addition, there are a number of optional keys:
39
Johan Herland32948422009-06-03 08:27:06 +020040submodule.<name>.update::
Michal Sojka5c31acf2015-03-02 23:57:58 +010041 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
Jonathan Niedere904deb2019-12-05 01:28:28 -080047 linkgit:git-submodule[1] for their meaning. For security
48 reasons, the '!command' form is not accepted here.
Peter Huttererca2cedb2009-04-24 09:06:38 +100049
W. Trevor King06b1abb2012-12-19 11:03:32 -050050submodule.<name>.branch::
51 A remote branch name for tracking updates in the upstream submodule.
Brandon Williams15ef7802016-10-19 13:42:54 -070052 If the option is not specified, it defaults to 'master'. A special
53 value of `.` is used to indicate that the name of the branch in the
54 submodule should be the same name as the current branch in the
55 current repository. See the `--remote` documentation in
56 linkgit:git-submodule[1] for details.
W. Trevor King06b1abb2012-12-19 11:03:32 -050057
Jens Lehmannc1a3c362010-11-11 00:55:41 +010058submodule.<name>.fetchRecurseSubmodules::
Jens Lehmannbf42b382011-03-06 23:12:19 +010059 This option can be used to control recursive fetching of this
Jens Lehmannc1a3c362010-11-11 00:55:41 +010060 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.
Ralf Wildenhues469bfc92011-01-03 20:03:34 +010063 Both settings can be overridden on the command line by using the
Jens Lehmannbf42b382011-03-06 23:12:19 +010064 "--[no-]recurse-submodules" option to "git fetch" and "git pull".
Jens Lehmannc1a3c362010-11-11 00:55:41 +010065
Jens Lehmann302ad7a2010-08-06 00:40:48 +020066submodule.<name>.ignore::
67 Defines under what circumstances "git status" and the diff family show
Sebastian Schuberth61e28242017-04-19 09:15:15 +000068 a submodule as modified. The following values are supported:
Andreas Heidukad471942018-10-22 22:45:43 +020069+
70--
Sebastian Schuberth61e28242017-04-19 09:15:15 +000071 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
Elijah Newren031fd4b2019-11-05 17:07:20 +000083 none;; No modifications to submodules are ignored, all of committed
Sebastian Schuberth61e28242017-04-19 09:15:15 +000084 differences, and modifications to tracked and untracked files are
85 shown. This is the default option.
86
Andreas Heidukad471942018-10-22 22:45:43 +020087If this option is also present in the submodules entry in .git/config
88of the superproject, the setting there will override the one found in
89.gitmodules.
90
91Both settings can be overridden on the command line by using the
Alex Henrie0d4304c2019-09-18 01:02:04 -060092"--ignore-submodules" option. The 'git submodule' commands are not
Andreas Heidukad471942018-10-22 22:45:43 +020093affected by this setting.
94--
Jens Lehmann302ad7a2010-08-06 00:40:48 +020095
Stefan Bellerf6fb30a2016-08-02 16:51:36 -070096submodule.<name>.shallow::
97 When set to true, a clone of this submodule will be performed as a
Sebastian Schuberth8d3047c2017-04-19 07:56:33 +000098 shallow clone (with a history depth of 1) unless the user explicitly
99 asks for a non-shallow clone.
Stefan Bellerf6fb30a2016-08-02 16:51:36 -0700100
Lars Hjemli891dbc62007-06-12 09:05:21 +0200101
102EXAMPLES
103--------
104
105Consider the following .gitmodules file:
106
Martin Ågren1925fe02019-09-07 16:12:49 +0200107----
108[submodule "libfoo"]
109 path = include/foo
110 url = git://foo.com/git/lib.git
Lars Hjemli891dbc62007-06-12 09:05:21 +0200111
Martin Ågren1925fe02019-09-07 16:12:49 +0200112[submodule "libbar"]
113 path = include/bar
114 url = git://bar.com/git/lib.git
115----
Lars Hjemli891dbc62007-06-12 09:05:21 +0200116
117This defines two submodules, `libfoo` and `libbar`. These are expected to
Corentin BOMPARD68ed71b2019-03-06 14:04:46 +0100118be checked out in the paths `include/foo` and `include/bar`, and for both
Jim Meyeringa7793a72012-03-28 10:41:54 +0200119submodules a URL is specified which can be used for cloning the submodules.
Lars Hjemli891dbc62007-06-12 09:05:21 +0200120
121SEE ALSO
122--------
Philippe Blaincc2bd5c2019-12-11 04:15:56 +0000123linkgit:git-submodule[1], linkgit:gitsubmodules[7], linkgit:git-config[1]
Lars Hjemli891dbc62007-06-12 09:05:21 +0200124
Lars Hjemli891dbc62007-06-12 09:05:21 +0200125GIT
126---
Christian Couder9e1f0a82008-06-06 09:07:32 +0200127Part of the linkgit:git[1] suite