blob: bdb0ee87ea58aa5896a62728191747b4c3ef4036 [file] [log] [blame] [view]
Mike Frysingerb8f7bb02018-10-10 01:05:11 -04001# repo Manifest Format
Shawn O. Pearce3e548192008-11-04 11:19:36 -08002
Mike Frysingera99f19f2024-01-04 12:41:32 -05003> **Warning: The "master" branch is no longer used. Use "main" instead.**<br>
4> https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
5
Shawn O. Pearce3e548192008-11-04 11:19:36 -08006A repo manifest describes the structure of a repo client; that is
7the directories that are visible and where they should be obtained
8from with git.
9
10The basic structure of a manifest is a bare Git repository holding
Mike Frysinger3891b752018-10-05 19:26:15 -040011a single `default.xml` XML file in the top level directory.
Shawn O. Pearce3e548192008-11-04 11:19:36 -080012
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
Mike Frysinger3891b752018-10-05 19:26:15 -040017[TOC]
18
Shawn O. Pearce3e548192008-11-04 11:19:36 -080019
Mike Frysingerb8f7bb02018-10-10 01:05:11 -040020## XML File Format
Shawn O. Pearce3e548192008-11-04 11:19:36 -080021
Mike Frysinger3891b752018-10-05 19:26:15 -040022A manifest XML file (e.g. `default.xml`) roughly conforms to the
Shawn O. Pearce3e548192008-11-04 11:19:36 -080023following DTD:
24
Mike Frysinger3891b752018-10-05 19:26:15 -040025```xml
26<!DOCTYPE manifest [
27 <!ELEMENT manifest (notice?,
28 remote*,
29 default?,
30 manifest-server?,
31 remove-project*,
32 project*,
33 extend-project*,
34 repo-hooks?,
35 include*)>
Chirayu Desaid5a5b192013-11-21 19:15:30 +053036
Mike Frysinger3891b752018-10-05 19:26:15 -040037 <!ELEMENT notice (#PCDATA)>
Chirayu Desaid5a5b192013-11-21 19:15:30 +053038
Mike Frysinger3891b752018-10-05 19:26:15 -040039 <!ELEMENT remote EMPTY>
40 <!ATTLIST remote name ID #REQUIRED>
41 <!ATTLIST remote alias CDATA #IMPLIED>
42 <!ATTLIST remote fetch CDATA #REQUIRED>
43 <!ATTLIST remote pushurl CDATA #IMPLIED>
44 <!ATTLIST remote review CDATA #IMPLIED>
45 <!ATTLIST remote revision CDATA #IMPLIED>
Chirayu Desaid5a5b192013-11-21 19:15:30 +053046
Mike Frysinger3891b752018-10-05 19:26:15 -040047 <!ELEMENT default EMPTY>
48 <!ATTLIST default remote IDREF #IMPLIED>
49 <!ATTLIST default revision CDATA #IMPLIED>
50 <!ATTLIST default dest-branch CDATA #IMPLIED>
51 <!ATTLIST default upstream CDATA #IMPLIED>
52 <!ATTLIST default sync-j CDATA #IMPLIED>
53 <!ATTLIST default sync-c CDATA #IMPLIED>
54 <!ATTLIST default sync-s CDATA #IMPLIED>
55 <!ATTLIST default sync-tags CDATA #IMPLIED>
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -070056
Mike Frysinger3891b752018-10-05 19:26:15 -040057 <!ELEMENT manifest-server EMPTY>
58 <!ATTLIST manifest-server url CDATA #REQUIRED>
Chirayu Desaid5a5b192013-11-21 19:15:30 +053059
Mike Frysinger3891b752018-10-05 19:26:15 -040060 <!ELEMENT project (annotation*,
61 project*,
62 copyfile*,
63 linkfile*)>
64 <!ATTLIST project name CDATA #REQUIRED>
65 <!ATTLIST project path CDATA #IMPLIED>
66 <!ATTLIST project remote IDREF #IMPLIED>
67 <!ATTLIST project revision CDATA #IMPLIED>
68 <!ATTLIST project dest-branch CDATA #IMPLIED>
69 <!ATTLIST project groups CDATA #IMPLIED>
70 <!ATTLIST project sync-c CDATA #IMPLIED>
71 <!ATTLIST project sync-s CDATA #IMPLIED>
Kyunam Jo01019d92019-03-18 13:30:58 +090072 <!ATTLIST project sync-tags CDATA #IMPLIED>
Mike Frysinger3891b752018-10-05 19:26:15 -040073 <!ATTLIST project upstream CDATA #IMPLIED>
74 <!ATTLIST project clone-depth CDATA #IMPLIED>
75 <!ATTLIST project force-path CDATA #IMPLIED>
James W. Mills24c13082012-04-12 15:04:13 -050076
Mike Frysinger3891b752018-10-05 19:26:15 -040077 <!ELEMENT annotation EMPTY>
78 <!ATTLIST annotation name CDATA #REQUIRED>
79 <!ATTLIST annotation value CDATA #REQUIRED>
80 <!ATTLIST annotation keep CDATA "true">
Chirayu Desaid5a5b192013-11-21 19:15:30 +053081
Mike Frysinger3891b752018-10-05 19:26:15 -040082 <!ELEMENT copyfile EMPTY>
83 <!ATTLIST copyfile src CDATA #REQUIRED>
84 <!ATTLIST copyfile dest CDATA #REQUIRED>
Ruslan Bilovol54527e72015-09-08 13:11:23 +030085
Mike Frysinger3891b752018-10-05 19:26:15 -040086 <!ELEMENT linkfile EMPTY>
87 <!ATTLIST linkfile src CDATA #REQUIRED>
88 <!ATTLIST linkfile dest CDATA #REQUIRED>
Ruslan Bilovol54527e72015-09-08 13:11:23 +030089
Mike Frysinger3891b752018-10-05 19:26:15 -040090 <!ELEMENT extend-project EMPTY>
91 <!ATTLIST extend-project name CDATA #REQUIRED>
92 <!ATTLIST extend-project path CDATA #IMPLIED>
93 <!ATTLIST extend-project groups CDATA #IMPLIED>
94 <!ATTLIST extend-project revision CDATA #IMPLIED>
Kyunam Jobd0aae92020-02-04 11:38:53 +090095 <!ATTLIST extend-project remote CDATA #IMPLIED>
Josh Triplett884a3872014-06-12 14:57:29 -070096
Mike Frysinger3891b752018-10-05 19:26:15 -040097 <!ELEMENT remove-project EMPTY>
98 <!ATTLIST remove-project name CDATA #REQUIRED>
Doug Anderson37282b42011-03-04 11:54:18 -080099
Mike Frysinger3891b752018-10-05 19:26:15 -0400100 <!ELEMENT repo-hooks EMPTY>
101 <!ATTLIST repo-hooks in-project CDATA #REQUIRED>
102 <!ATTLIST repo-hooks enabled-list CDATA #REQUIRED>
Brian Harring26448742011-04-28 05:04:41 -0700103
Mike Frysinger3891b752018-10-05 19:26:15 -0400104 <!ELEMENT include EMPTY>
105 <!ATTLIST include name CDATA #REQUIRED>
106]>
107```
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800108
109A description of the elements and their attributes follows.
110
111
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400112### Element manifest
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800113
114The root element of the file.
115
116
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400117### Element remote
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800118
119One or more remote elements may be specified. Each remote element
120specifies a Git URL shared by one or more projects and (optionally)
121the Gerrit review server those projects upload changes through.
122
123Attribute `name`: A short name unique to this manifest file. The
124name specified here is used as the remote name in each project's
125.git/config, and is therefore automatically available to commands
126like `git fetch`, `git remote`, `git pull` and `git push`.
127
Yestin Sunb292b982012-07-02 07:32:50 -0700128Attribute `alias`: The alias, if specified, is used to override
129`name` to be set as the remote name in each project's .git/config.
130Its value can be duplicated while attribute `name` has to be unique
131in the manifest file. This helps each project to be able to have
132same remote name which actually points to different remote url.
133
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800134Attribute `fetch`: The Git URL prefix for all projects which use
135this remote. Each project's name is appended to this prefix to
136form the actual URL used to clone the project.
137
Steve Raed6480452016-08-10 15:00:00 -0700138Attribute `pushurl`: The Git "push" URL prefix for all projects
139which use this remote. Each project's name is appended to this
140prefix to form the actual URL used to "git push" the project.
141This attribute is optional; if not specified then "git push"
142will use the same URL as the `fetch` attribute.
143
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800144Attribute `review`: Hostname of the Gerrit server where reviews
145are uploaded to by `repo upload`. This attribute is optional;
146if not specified then `repo upload` will not function.
147
Anthony King36ea2fb2014-05-06 11:54:01 +0100148Attribute `revision`: Name of a Git branch (e.g. `master` or
149`refs/heads/master`). Remotes with their own revision will override
150the default revision.
151
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400152### Element default
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800153
154At most one default element may be specified. Its remote and
155revision attributes are used when a project element does not
156specify its own remote or revision attribute.
157
158Attribute `remote`: Name of a previously defined remote element.
159Project elements lacking a remote attribute of their own will use
160this remote.
161
162Attribute `revision`: Name of a Git branch (e.g. `master` or
163`refs/heads/master`). Project elements lacking their own
164revision attribute will use this revision.
165
Bryan Jacobsf609f912013-05-06 13:36:24 -0400166Attribute `dest-branch`: Name of a Git branch (e.g. `master`).
167Project elements not setting their own `dest-branch` will inherit
168this value. If this value is not set, projects will use `revision`
169by default instead.
170
Nasser Grainawida403412018-05-04 12:53:29 -0600171Attribute `upstream`: Name of the Git ref in which a sha1
172can be found. Used when syncing a revision locked manifest in
173-c mode to avoid having to sync the entire ref space. Project elements
174not setting their own `upstream` will inherit this value.
175
Mani Chandel7a91d512014-07-24 16:27:08 +0530176Attribute `sync-j`: Number of parallel jobs to use when synching.
David Pursehouse4e465202012-11-27 22:20:10 +0900177
Mani Chandel7a91d512014-07-24 16:27:08 +0530178Attribute `sync-c`: Set to true to only sync the given Git
David Pursehouse4e465202012-11-27 22:20:10 +0900179branch (specified in the `revision` attribute) rather than the
Mani Chandel7a91d512014-07-24 16:27:08 +0530180whole ref space. Project elements lacking a sync-c element of
David Pursehouse4e465202012-11-27 22:20:10 +0900181their own will use this value.
182
Mani Chandel7a91d512014-07-24 16:27:08 +0530183Attribute `sync-s`: Set to true to also sync sub-projects.
David Pursehouse4e465202012-11-27 22:20:10 +0900184
YOUNG HO CHAa32c92c2018-02-14 16:57:31 +0900185Attribute `sync-tags`: Set to false to only sync the given Git
186branch (specified in the `revision` attribute) rather than
187the other ref tags.
188
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800189
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400190### Element manifest-server
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700191
192At most one manifest-server may be specified. The url attribute
193is used to specify the URL of a manifest server, which is an
David Pursehouse9a27d012012-08-21 14:23:49 +0900194XML RPC service.
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700195
David Pursehouse9a27d012012-08-21 14:23:49 +0900196The manifest server should implement the following RPC methods:
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700197
Mike Frysinger3891b752018-10-05 19:26:15 -0400198 GetApprovedManifest(branch, target)
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700199
David Pursehouse9a27d012012-08-21 14:23:49 +0900200Return a manifest in which each project is pegged to a known good revision
David Pursehousee8688412016-04-13 17:55:34 +0900201for the current branch and target. This is used by repo sync when the
202--smart-sync option is given.
David Pursehouse9a27d012012-08-21 14:23:49 +0900203
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700204The target to use is defined by environment variables TARGET_PRODUCT
205and TARGET_BUILD_VARIANT. These variables are used to create a string
206of the form $TARGET_PRODUCT-$TARGET_BUILD_VARIANT, e.g. passion-userdebug.
207If one of those variables or both are not present, the program will call
David Pursehousedaa851f2012-08-21 13:52:18 +0900208GetApprovedManifest without the target parameter and the manifest server
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700209should choose a reasonable default target.
210
Mike Frysinger3891b752018-10-05 19:26:15 -0400211 GetManifest(tag)
David Pursehouse9a27d012012-08-21 14:23:49 +0900212
213Return a manifest in which each project is pegged to the revision at
David Pursehousee8688412016-04-13 17:55:34 +0900214the specified tag. This is used by repo sync when the --smart-tag option
215is given.
David Pursehouse9a27d012012-08-21 14:23:49 +0900216
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700217
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400218### Element project
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800219
220One or more project elements may be specified. Each element
221describes a single Git repository to be cloned into the repo
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800222client workspace. You may specify Git-submodules by creating a
223nested project. Git-submodules will be automatically
224recognized and inherit their parent's attributes, but those
225may be overridden by an explicitly specified project element.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800226
227Attribute `name`: A unique name for this project. The project's
228name is appended onto its remote's fetch URL to generate the actual
229URL to configure the Git remote with. The URL gets formed as:
230
Mike Frysinger3891b752018-10-05 19:26:15 -0400231 ${remote_fetch}/${project_name}.git
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800232
233where ${remote_fetch} is the remote's fetch attribute and
234${project_name} is the project's name attribute. The suffix ".git"
David Pursehousedaa851f2012-08-21 13:52:18 +0900235is always appended as repo assumes the upstream is a forest of
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800236bare Git repositories. If the project has a parent element, its
237name will be prefixed by the parent's.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800238
239The project name must match the name Gerrit knows, if Gerrit is
240being used for code reviews.
241
242Attribute `path`: An optional path relative to the top directory
243of the repo client where the Git working directory for this project
244should be placed. If not supplied the project name is used.
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800245If the project has a parent element, its path will be prefixed
246by the parent's.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800247
248Attribute `remote`: Name of a previously defined remote element.
249If not supplied the remote given by the default element is used.
250
251Attribute `revision`: Name of the Git branch the manifest wants
252to track for this project. Names can be relative to refs/heads
253(e.g. just "master") or absolute (e.g. "refs/heads/master").
254Tags and/or explicit SHA-1s should work in theory, but have not
255been extensively tested. If not supplied the revision given by
Anthony King36ea2fb2014-05-06 11:54:01 +0100256the remote element is used if applicable, else the default
257element is used.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800258
Bryan Jacobsf609f912013-05-06 13:36:24 -0400259Attribute `dest-branch`: Name of a Git branch (e.g. `master`).
260When using `repo upload`, changes will be submitted for code
261review on this branch. If unspecified both here and in the
262default element, `revision` is used instead.
263
Colin Cross5acde752012-03-28 20:15:45 -0700264Attribute `groups`: List of groups to which this project belongs,
Conley Owens971de8e2012-04-16 10:36:08 -0700265whitespace or comma separated. All projects belong to the group
Conley Owensbb1b5f52012-08-13 13:11:18 -0700266"all", and each project automatically belongs to a group of
267its name:`name` and path:`path`. E.g. for
Brian Harring7da13142012-06-15 02:24:20 -0700268<project name="monkeys" path="barrel-of"/>, that project
269definition is implicitly in the following manifest groups:
Conley Owensbb1b5f52012-08-13 13:11:18 -0700270default, name:monkeys, and path:barrel-of. If you place a project in the
271group "notdefault", it will not be automatically downloaded by repo.
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800272If the project has a parent element, the `name` and `path` here
273are the prefixed ones.
Colin Cross5acde752012-03-28 20:15:45 -0700274
Mani Chandel7a91d512014-07-24 16:27:08 +0530275Attribute `sync-c`: Set to true to only sync the given Git
David Pursehouse4e465202012-11-27 22:20:10 +0900276branch (specified in the `revision` attribute) rather than the
277whole ref space.
278
Mani Chandel7a91d512014-07-24 16:27:08 +0530279Attribute `sync-s`: Set to true to also sync sub-projects.
David Pursehouse4e465202012-11-27 22:20:10 +0900280
Nasser Grainawi909d58b2014-09-19 12:13:04 -0600281Attribute `upstream`: Name of the Git ref in which a sha1
David Pursehouse4e465202012-11-27 22:20:10 +0900282can be found. Used when syncing a revision locked manifest in
283-c mode to avoid having to sync the entire ref space.
284
David Pursehouseede7f122012-11-27 22:25:30 +0900285Attribute `clone-depth`: Set the depth to use when fetching this
286project. If specified, this value will override any value given
287to repo init with the --depth option on the command line.
288
Scott Fandb83b1b2013-02-28 09:34:14 +0800289Attribute `force-path`: Set to true to force this project to create the
290local mirror repository according to its `path` attribute (if supplied)
291rather than the `name` attribute. This attribute only applies to the
292local mirrors syncing, it will be ignored when syncing the projects in a
293client working directory.
294
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400295### Element extend-project
Josh Triplett884a3872014-06-12 14:57:29 -0700296
297Modify the attributes of the named project.
298
299This element is mostly useful in a local manifest file, to modify the
300attributes of an existing project without completely replacing the
301existing project definition. This makes the local manifest more robust
302against changes to the original manifest.
303
304Attribute `path`: If specified, limit the change to projects checked out
305at the specified path, rather than all projects with the given name.
306
307Attribute `groups`: List of additional groups to which this project
308belongs. Same syntax as the corresponding element of `project`.
309
Luis Hector Chavez7d525852018-03-15 09:54:08 -0700310Attribute `revision`: If specified, overrides the revision of the original
311project. Same syntax as the corresponding element of `project`.
312
Kyunam Jobd0aae92020-02-04 11:38:53 +0900313Attribute `remote`: If specified, overrides the remote of the original
314project. Same syntax as the corresponding element of `project`.
315
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400316### Element annotation
James W. Mills24c13082012-04-12 15:04:13 -0500317
318Zero or more annotation elements may be specified as children of a
319project element. Each element describes a name-value pair that will be
320exported into each project's environment during a 'forall' command,
321prefixed with REPO__. In addition, there is an optional attribute
322"keep" which accepts the case insensitive values "true" (default) or
323"false". This attribute determines whether or not the annotation will
324be kept when exported with the manifest subcommand.
325
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400326### Element copyfile
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300327
328Zero or more copyfile elements may be specified as children of a
329project element. Each element describes a src-dest pair of files;
Mike Frysinger3891b752018-10-05 19:26:15 -0400330the "src" file will be copied to the "dest" place during `repo sync`
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300331command.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400332
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300333"src" is project relative, "dest" is relative to the top of the tree.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400334Copying from paths outside of the project or to paths outside of the repo
335client is not allowed.
336
337"src" and "dest" must be files. Directories or symlinks are not allowed.
338Intermediate paths must not be symlinks either.
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300339
Mike Frysinger50d27632019-08-01 18:57:10 -0400340Parent directories of "dest" will be automatically created if missing.
341
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400342### Element linkfile
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300343
344It's just like copyfile and runs at the same time as copyfile but
345instead of copying it creates a symlink.
346
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400347The symlink is created at "dest" (relative to the top of the tree) and
Mike Frysinger04122b72019-07-31 23:32:58 -0400348points to the path specified by "src" which is a path in the project.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400349
Mike Frysinger50d27632019-08-01 18:57:10 -0400350Parent directories of "dest" will be automatically created if missing.
351
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400352The symlink target may be a file or directory, but it may not point outside
353of the repo client.
354
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400355### Element remove-project
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800356
357Deletes the named project from the internal manifest table, possibly
358allowing a subsequent project element in the same manifest file to
359replace the project with a different source.
360
David Pursehouseb1525bf2012-11-14 08:51:38 +0900361This element is mostly useful in a local manifest file, where
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800362the user can remove a project, and possibly replace it with their
363own definition.
364
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400365### Element include
Brian Harring26448742011-04-28 05:04:41 -0700366
367This element provides the capability of including another manifest
368file into the originating manifest. Normal rules apply for the
David Pursehouse9f3406e2012-11-14 08:52:25 +0900369target manifest to include - it must be a usable manifest on its own.
Brian Harring26448742011-04-28 05:04:41 -0700370
David Pursehouse9f3406e2012-11-14 08:52:25 +0900371Attribute `name`: the manifest to include, specified relative to
372the manifest repository's root.
Brian Harring26448742011-04-28 05:04:41 -0700373
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800374
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400375## Local Manifests
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800376
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900377Additional remotes and projects may be added through local manifest
378files stored in `$TOP_DIR/.repo/local_manifests/*.xml`.
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800379
380For example:
381
Mike Frysinger3891b752018-10-05 19:26:15 -0400382 $ ls .repo/local_manifests
383 local_manifest.xml
384 another_local_manifest.xml
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900385
Mike Frysinger3891b752018-10-05 19:26:15 -0400386 $ cat .repo/local_manifests/local_manifest.xml
387 <?xml version="1.0" encoding="UTF-8"?>
388 <manifest>
389 <project path="manifest"
390 name="tools/manifest" />
391 <project path="platform-manifest"
392 name="platform/manifest" />
393 </manifest>
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800394
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900395Users may add projects to the local manifest(s) prior to a `repo sync`
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800396invocation, instructing repo to automatically download and manage
397these extra projects.
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900398
David Pursehouse52f1e5d2012-11-14 04:53:24 +0900399Manifest files stored in `$TOP_DIR/.repo/local_manifests/*.xml` will
400be loaded in alphabetical order.
401
Mike Frysinger4e1fc102020-09-06 14:42:47 -0400402The legacy `$TOP_DIR/.repo/local_manifest.xml` path is no longer supported.