blob: 6a1ca4abad73631c13a4d074deb11102289a0d43 [file] [log] [blame]
Lars Hjemli891dbc62007-06-12 09:05:21 +02001gitmodules(5)
2=============
3
4NAME
5----
6gitmodules - defining submodule properties
7
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
22submodule has been added unless it was customized with the '--name'
23option 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
Johan Herland32948422009-06-03 08:27:06 +020038submodule.<name>.update::
39 Defines what to do when the submodule is updated by the superproject.
40 If 'checkout' (the default), the new commit specified in the
41 superproject will be checked out in the submodule on a detached HEAD.
42 If 'rebase', the current branch of the submodule will be rebased onto
Johan Herland42b49172009-06-03 00:59:12 +020043 the commit specified in the superproject. If 'merge', the commit
44 specified in the superproject will be merged into the current branch
45 in the submodule.
Heiko Voigte6a1c432012-05-10 20:59:04 +020046 If 'none', the submodule with name `$name` will not be updated
47 by default.
48
Johan Herland32948422009-06-03 08:27:06 +020049 This config option is overridden if 'git submodule update' is given
Heiko Voigte6a1c432012-05-10 20:59:04 +020050 the '--merge', '--rebase' or '--checkout' options.
Peter Huttererca2cedb2009-04-24 09:06:38 +100051
W. Trevor King06b1abb2012-12-19 11:03:32 -050052submodule.<name>.branch::
53 A remote branch name for tracking updates in the upstream submodule.
54 If the option is not specified, it defaults to 'master'. See the
55 `--remote` documentation in linkgit:git-submodule[1] for details.
56
Jens Lehmannc1a3c362010-11-11 00:55:41 +010057submodule.<name>.fetchRecurseSubmodules::
Jens Lehmannbf42b382011-03-06 23:12:19 +010058 This option can be used to control recursive fetching of this
Jens Lehmannc1a3c362010-11-11 00:55:41 +010059 submodule. If this option is also present in the submodules entry in
60 .git/config of the superproject, the setting there will override the
61 one found in .gitmodules.
Ralf Wildenhues469bfc92011-01-03 20:03:34 +010062 Both settings can be overridden on the command line by using the
Jens Lehmannbf42b382011-03-06 23:12:19 +010063 "--[no-]recurse-submodules" option to "git fetch" and "git pull".
Jens Lehmannc1a3c362010-11-11 00:55:41 +010064
Jens Lehmann302ad7a2010-08-06 00:40:48 +020065submodule.<name>.ignore::
66 Defines under what circumstances "git status" and the diff family show
67 a submodule as modified. When set to "all", it will never be considered
68 modified, "dirty" will ignore all changes to the submodules work tree and
69 takes only differences between the HEAD of the submodule and the commit
70 recorded in the superproject into account. "untracked" will additionally
71 let submodules with modified tracked files in their work tree show up.
72 Using "none" (the default when this option is not set) also shows
73 submodules that have untracked files in their work tree as changed.
74 If this option is also present in the submodules entry in .git/config of
75 the superproject, the setting there will override the one found in
76 .gitmodules.
Ralf Wildenhues3776ea92010-08-22 13:12:12 +020077 Both settings can be overridden on the command line by using the
Jens Lehmann302ad7a2010-08-06 00:40:48 +020078 "--ignore-submodule" option.
79
Lars Hjemli891dbc62007-06-12 09:05:21 +020080
81EXAMPLES
82--------
83
84Consider the following .gitmodules file:
85
86 [submodule "libfoo"]
87 path = include/foo
88 url = git://foo.com/git/lib.git
89
90 [submodule "libbar"]
91 path = include/bar
92 url = git://bar.com/git/lib.git
93
94
95This defines two submodules, `libfoo` and `libbar`. These are expected to
96be checked out in the paths 'include/foo' and 'include/bar', and for both
Jim Meyeringa7793a72012-03-28 10:41:54 +020097submodules a URL is specified which can be used for cloning the submodules.
Lars Hjemli891dbc62007-06-12 09:05:21 +020098
99SEE ALSO
100--------
Dan McGee5162e692007-12-29 00:20:38 -0600101linkgit:git-submodule[1] linkgit:git-config[1]
Lars Hjemli891dbc62007-06-12 09:05:21 +0200102
Lars Hjemli891dbc62007-06-12 09:05:21 +0200103GIT
104---
Christian Couder9e1f0a82008-06-06 09:07:32 +0200105Part of the linkgit:git[1] suite