blob: e7d1f643b53fc639211a8d6952975f76e4b053fa [file] [log] [blame]
Shawn O. Pearce0125ae22009-07-03 18:05:23 -07001repo Manifest Format (submodule)
2================================
3
4A repo manifest describes the structure of a repo client; that is
5the directories that are visible and where they should be obtained
6from with git.
7
8The basic structure of a manifest is a bare Git repository holding
9a 'gitmodules' file in the top level directory, and one or more
10gitlink references pointing at commits from the referenced projects.
11This is the same structure as used by 'git submodule'.
12
13Manifests are inherently version controlled, since they are kept
14within a Git repository. Updates to manifests are automatically
15obtained by clients during `repo sync`.
16
17.gitmodules
18===========
19
20The '.gitmodules' file, located in the top-level directory of the
21client's working tree (or manifest repository), is a text file with
22a syntax matching the requirements of 'git config'.
23
24This file contains one subsection per project (also called a
25submodule by git), and the subsection value is a unique name to
26describe the project. Each submodule section must contain the
27following required keys:
28
29 * path
30 * url
31
32submodule.<name>.path
33---------------------
34
35Defines the path, relative to the top-level directory of the client's
36working tree, where the project is expected to be checked out. The
37path name must not end with a '/'. All paths must be unique within
38the .gitmodules file.
39
40At the specified path within the manifest repository a gitlink
41tree entry (an entry with file mode 160000) must exist referencing
42a commit SHA-1 from the project. This tree entry specifies the
43exact version of the project that `repo sync` will synchronize the
44client's working tree to.
45
46submodule.<name>.url
47--------------------
48
49Defines a URL from where the project repository can be cloned.
50By default `repo sync` will clone from this URL whenever a user
51needs to access this project.
52
53submodule.<name>.revision
54-------------------------
55
56Name of the branch in the project repository that Gerrit Code Review
57should automatically refresh the project's gitlink entry from.
58
59If set, during submit of a change within the referenced project,
60Gerrit Code Review will automatically update the manifest
61repository's corresponding gitlink to the new commit SHA-1 of
62this branch.
63
64Valid values are a short branch name (e.g. 'master'), a full ref
65name (e.g. 'refs/heads/master'), or '.' to request using the same
66branch name as the manifest branch itself. Since '.' automatically
67uses the manifest branch, '.' is the recommended value.
68
69If this key is not set, Gerrit Code Review will NOT automatically
70update the gitlink. An unset key requires the manifest maintainer
71to manually update the gitlink when it is necessary to reference
72a different revision of the project.
73
74submodule.<name>.update
75-----------------------
76
77This key is not supported by repo. If set, it will be ignored.
78
79.review
80=======
81
82The optional '.review' file, located in the top-level directory of
83the client's working tree (or manifest repository), is a text file
84with a syntax matching the requirements of 'git config'.
85
86This file describes how `repo upload` should interact with the
87project's preferred code review system.
88
89review.url
90----------
91
92URL of the default Gerrit Code Review server. If a project does
93not have a specific URL in the '.review' file, this default URL
94will be used instead.
95
96review.<name>.url
97-----------------
98
99Project specific URL of the Gerrit Code Review server, for the
100submodule whose project name is <name>.
101
102Example
103=======
104
105 $ cat .gitmodules
106 [submodule "app/Clock"]
107 path = clock
108 url = git://vcs.example.com/ClockWidget.git
109 revision = .
110 [submodule "app/Browser"]
111 path = net/browser
112 url = git://netgroup.example.com/network/web/Browser.git
113 revision = .
114
115 $ cat .review
116 [review]
117 url = vcs-gerrit.example.com
118 [review "app/Browser"]
119 url = netgroup.example.com
120
121In the above example, the app/Clock project will send its code
122reviews to the default server, vcs-gerrit.example.com, while
123app/Browser will send its code reviews to netgroup.example.com.
124
125See Also
126========
127
128 * http://www.kernel.org/pub/software/scm/git/docs/gitmodules.html
129 * http://www.kernel.org/pub/software/scm/git/docs/git-config.html
130 * http://code.google.com/p/gerrit/