blob: da83d0dd33310fa59e7be6d91a2460fa2ba4b280 [file] [log] [blame] [view]
Mike Frysingerb8f7bb02018-10-10 01:05:11 -04001# repo Manifest Format
Shawn O. Pearce3e548192008-11-04 11:19:36 -08002
3A repo manifest describes the structure of a repo client; that is
4the directories that are visible and where they should be obtained
5from with git.
6
7The basic structure of a manifest is a bare Git repository holding
Mike Frysinger3891b752018-10-05 19:26:15 -04008a single `default.xml` XML file in the top level directory.
Shawn O. Pearce3e548192008-11-04 11:19:36 -08009
10Manifests are inherently version controlled, since they are kept
11within a Git repository. Updates to manifests are automatically
12obtained by clients during `repo sync`.
13
Mike Frysinger3891b752018-10-05 19:26:15 -040014[TOC]
15
Shawn O. Pearce3e548192008-11-04 11:19:36 -080016
Mike Frysingerb8f7bb02018-10-10 01:05:11 -040017## XML File Format
Shawn O. Pearce3e548192008-11-04 11:19:36 -080018
Mike Frysinger3891b752018-10-05 19:26:15 -040019A manifest XML file (e.g. `default.xml`) roughly conforms to the
Shawn O. Pearce3e548192008-11-04 11:19:36 -080020following DTD:
21
Mike Frysinger3891b752018-10-05 19:26:15 -040022```xml
23
Mike Frysinger0888a082021-04-13 20:22:01 -040024
Mike Frysinger3891b752018-10-05 19:26:15 -040025
26 remote*,
27 default?,
28 manifest-server?,
29 remove-project*,
30 project*,
31 extend-project*,
32 repo-hooks?,
Raman Tenneti1bb4fb22021-01-07 16:50:45 -080033 superproject?,
Mike Frysinger3891b752018-10-05 19:26:15 -040034 include*)>
Chirayu Desaid5a5b192013-11-21 19:15:30 +053035
Mike Frysinger3891b752018-10-05 19:26:15 -040036
Chirayu Desaid5a5b192013-11-21 19:15:30 +053037
Mike Frysinger3891b752018-10-05 19:26:15 -040038
39
40
41
42
43
44
Chirayu Desaid5a5b192013-11-21 19:15:30 +053045
Mike Frysinger3891b752018-10-05 19:26:15 -040046
47
48
49
50
51
52
53
54
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -070055
Mike Frysinger3891b752018-10-05 19:26:15 -040056
57
Chirayu Desaid5a5b192013-11-21 19:15:30 +053058
Mike Frysinger3891b752018-10-05 19:26:15 -040059
60 project*,
61 copyfile*,
62 linkfile*)>
63
64
65
66
67
68
69
70
Kyunam Jo01019d92019-03-18 13:30:58 +090071
Mike Frysinger3891b752018-10-05 19:26:15 -040072
73
74
James W. Mills24c13082012-04-12 15:04:13 -050075
Mike Frysinger3891b752018-10-05 19:26:15 -040076
77
78
79
Chirayu Desaid5a5b192013-11-21 19:15:30 +053080
Mike Frysinger3891b752018-10-05 19:26:15 -040081
82
83
Ruslan Bilovol54527e72015-09-08 13:11:23 +030084
Mike Frysinger3891b752018-10-05 19:26:15 -040085
86
87
Ruslan Bilovol54527e72015-09-08 13:11:23 +030088
Mike Frysinger3891b752018-10-05 19:26:15 -040089
90
91
92
93
Kyunam Jobd0aae92020-02-04 11:38:53 +090094
Josh Triplett884a3872014-06-12 14:57:29 -070095
Mike Frysinger3891b752018-10-05 19:26:15 -040096
97
Doug Anderson37282b42011-03-04 11:54:18 -080098
Mike Frysinger3891b752018-10-05 19:26:15 -040099
100
101
Brian Harring26448742011-04-28 05:04:41 -0700102
Raman Tenneti1bb4fb22021-01-07 16:50:45 -0800103
104
105
106
Mike Frysinger3891b752018-10-05 19:26:15 -0400107
Fredrik de Groot352c93b2020-10-06 12:55:14 +0200108
109
Mike Frysinger3891b752018-10-05 19:26:15 -0400110]>
111```
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800112
Raman Tenneti48b2d102021-01-11 12:18:47 -0800113For compatibility purposes across repo releases, all unknown elements are
114silently ignored. However, repo reserves all possible names for itself for
115future use. If you want to use custom elements, the `x-*` namespace is
116reserved for that purpose, and repo guarantees to never allocate any
117corresponding names.
118
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800119A description of the elements and their attributes follows.
120
121
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400122### Element manifest
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800123
124The root element of the file.
125
Mike Frysinger51e39d52020-12-04 05:32:06 -0500126### Element notice
127
128Arbitrary text that is displayed to users whenever `repo sync` finishes.
129The content is simply passed through as it exists in the manifest.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800130
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400131### Element remote
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800132
133One or more remote elements may be specified. Each remote element
134specifies a Git URL shared by one or more projects and (optionally)
135the Gerrit review server those projects upload changes through.
136
137Attribute `name`: A short name unique to this manifest file. The
138name specified here is used as the remote name in each project's
139.git/config, and is therefore automatically available to commands
140like `git fetch`, `git remote`, `git pull` and `git push`.
141
Yestin Sunb292b982012-07-02 07:32:50 -0700142Attribute `alias`: The alias, if specified, is used to override
143`name` to be set as the remote name in each project's .git/config.
144Its value can be duplicated while attribute `name` has to be unique
145in the manifest file. This helps each project to be able to have
146same remote name which actually points to different remote url.
147
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800148Attribute `fetch`: The Git URL prefix for all projects which use
149this remote. Each project's name is appended to this prefix to
150form the actual URL used to clone the project.
151
Steve Raed6480452016-08-10 15:00:00 -0700152Attribute `pushurl`: The Git "push" URL prefix for all projects
153which use this remote. Each project's name is appended to this
154prefix to form the actual URL used to "git push" the project.
155This attribute is optional; if not specified then "git push"
156will use the same URL as the `fetch` attribute.
157
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800158Attribute `review`: Hostname of the Gerrit server where reviews
159are uploaded to by `repo upload`. This attribute is optional;
160if not specified then `repo upload` will not function.
161
Mike Frysinger6e89c962020-11-15 18:42:26 -0500162Attribute `revision`: Name of a Git branch (e.g. `main` or
163`refs/heads/main`). Remotes with their own revision will override
Anthony King36ea2fb2014-05-06 11:54:01 +0100164the default revision.
165
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400166### Element default
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800167
168At most one default element may be specified. Its remote and
169revision attributes are used when a project element does not
170specify its own remote or revision attribute.
171
172Attribute `remote`: Name of a previously defined remote element.
173Project elements lacking a remote attribute of their own will use
174this remote.
175
Mike Frysinger6e89c962020-11-15 18:42:26 -0500176Attribute `revision`: Name of a Git branch (e.g. `main` or
177`refs/heads/main`). Project elements lacking their own
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800178revision attribute will use this revision.
179
Mike Frysinger6e89c962020-11-15 18:42:26 -0500180Attribute `dest-branch`: Name of a Git branch (e.g. `main`).
Bryan Jacobsf609f912013-05-06 13:36:24 -0400181Project elements not setting their own `dest-branch` will inherit
182this value. If this value is not set, projects will use `revision`
183by default instead.
184
Nasser Grainawida403412018-05-04 12:53:29 -0600185Attribute `upstream`: Name of the Git ref in which a sha1
186can be found. Used when syncing a revision locked manifest in
187-c mode to avoid having to sync the entire ref space. Project elements
188not setting their own `upstream` will inherit this value.
189
Mani Chandel7a91d512014-07-24 16:27:08 +0530190Attribute `sync-j`: Number of parallel jobs to use when synching.
David Pursehouse4e465202012-11-27 22:20:10 +0900191
Mani Chandel7a91d512014-07-24 16:27:08 +0530192Attribute `sync-c`: Set to true to only sync the given Git
David Pursehouse4e465202012-11-27 22:20:10 +0900193branch (specified in the `revision` attribute) rather than the
Mani Chandel7a91d512014-07-24 16:27:08 +0530194whole ref space. Project elements lacking a sync-c element of
David Pursehouse4e465202012-11-27 22:20:10 +0900195their own will use this value.
196
Mani Chandel7a91d512014-07-24 16:27:08 +0530197Attribute `sync-s`: Set to true to also sync sub-projects.
David Pursehouse4e465202012-11-27 22:20:10 +0900198
YOUNG HO CHAa32c92c2018-02-14 16:57:31 +0900199Attribute `sync-tags`: Set to false to only sync the given Git
200branch (specified in the `revision` attribute) rather than
201the other ref tags.
202
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800203
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400204### Element manifest-server
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700205
206At most one manifest-server may be specified. The url attribute
207is used to specify the URL of a manifest server, which is an
David Pursehouse9a27d012012-08-21 14:23:49 +0900208XML RPC service.
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700209
David Pursehouse9a27d012012-08-21 14:23:49 +0900210The manifest server should implement the following RPC methods:
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700211
Mike Frysinger3891b752018-10-05 19:26:15 -0400212 GetApprovedManifest(branch, target)
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700213
David Pursehouse9a27d012012-08-21 14:23:49 +0900214Return a manifest in which each project is pegged to a known good revision
David Pursehousee8688412016-04-13 17:55:34 +0900215for the current branch and target. This is used by repo sync when the
216--smart-sync option is given.
David Pursehouse9a27d012012-08-21 14:23:49 +0900217
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700218The target to use is defined by environment variables TARGET_PRODUCT
219and TARGET_BUILD_VARIANT. These variables are used to create a string
220of the form $TARGET_PRODUCT-$TARGET_BUILD_VARIANT, e.g. passion-userdebug.
221If one of those variables or both are not present, the program will call
David Pursehousedaa851f2012-08-21 13:52:18 +0900222GetApprovedManifest without the target parameter and the manifest server
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700223should choose a reasonable default target.
224
Mike Frysinger3891b752018-10-05 19:26:15 -0400225 GetManifest(tag)
David Pursehouse9a27d012012-08-21 14:23:49 +0900226
227Return a manifest in which each project is pegged to the revision at
David Pursehousee8688412016-04-13 17:55:34 +0900228the specified tag. This is used by repo sync when the --smart-tag option
229is given.
David Pursehouse9a27d012012-08-21 14:23:49 +0900230
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700231
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400232### Element project
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800233
234One or more project elements may be specified. Each element
235describes a single Git repository to be cloned into the repo
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800236client workspace. You may specify Git-submodules by creating a
237nested project. Git-submodules will be automatically
238recognized and inherit their parent's attributes, but those
239may be overridden by an explicitly specified project element.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800240
241Attribute `name`: A unique name for this project. The project's
242name is appended onto its remote's fetch URL to generate the actual
243URL to configure the Git remote with. The URL gets formed as:
244
Mike Frysinger3891b752018-10-05 19:26:15 -0400245 ${remote_fetch}/${project_name}.git
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800246
247where ${remote_fetch} is the remote's fetch attribute and
248${project_name} is the project's name attribute. The suffix ".git"
David Pursehousedaa851f2012-08-21 13:52:18 +0900249is always appended as repo assumes the upstream is a forest of
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800250bare Git repositories. If the project has a parent element, its
251name will be prefixed by the parent's.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800252
253The project name must match the name Gerrit knows, if Gerrit is
254being used for code reviews.
255
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500256"name" must not be empty, and may not be an absolute path or use "." or ".."
257path components. It is always interpreted relative to the remote's fetch
258settings, so if a different base path is needed, declare a different remote
259with the new settings needed.
260These restrictions are not enforced for [Local Manifests].
261
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800262Attribute `path`: An optional path relative to the top directory
263of the repo client where the Git working directory for this project
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500264should be placed. If not supplied the project "name" is used.
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800265If the project has a parent element, its path will be prefixed
266by the parent's.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800267
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500268"path" may not be an absolute path or use "." or ".." path components.
269These restrictions are not enforced for [Local Manifests].
270
271If you want to place files into the root of the checkout (e.g. a README or
272Makefile or another build script), use the [copyfile] or [linkfile] elements
273instead.
274
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800275Attribute `remote`: Name of a previously defined remote element.
276If not supplied the remote given by the default element is used.
277
278Attribute `revision`: Name of the Git branch the manifest wants
279to track for this project. Names can be relative to refs/heads
Mike Frysinger6e89c962020-11-15 18:42:26 -0500280(e.g. just "main") or absolute (e.g. "refs/heads/main").
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800281Tags and/or explicit SHA-1s should work in theory, but have not
282been extensively tested. If not supplied the revision given by
Anthony King36ea2fb2014-05-06 11:54:01 +0100283the remote element is used if applicable, else the default
284element is used.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800285
Mike Frysinger6e89c962020-11-15 18:42:26 -0500286Attribute `dest-branch`: Name of a Git branch (e.g. `main`).
Bryan Jacobsf609f912013-05-06 13:36:24 -0400287When using `repo upload`, changes will be submitted for code
288review on this branch. If unspecified both here and in the
289default element, `revision` is used instead.
290
Colin Cross5acde752012-03-28 20:15:45 -0700291Attribute `groups`: List of groups to which this project belongs,
Conley Owens971de8e2012-04-16 10:36:08 -0700292whitespace or comma separated. All projects belong to the group
Conley Owensbb1b5f52012-08-13 13:11:18 -0700293"all", and each project automatically belongs to a group of
294its name:`name` and path:`path`. E.g. for
Jashank Jeremy97477472020-12-12 20:50:22 +1100295``, that project
Brian Harring7da13142012-06-15 02:24:20 -0700296definition is implicitly in the following manifest groups:
Conley Owensbb1b5f52012-08-13 13:11:18 -0700297default, name:monkeys, and path:barrel-of. If you place a project in the
298group "notdefault", it will not be automatically downloaded by repo.
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800299If the project has a parent element, the `name` and `path` here
300are the prefixed ones.
Colin Cross5acde752012-03-28 20:15:45 -0700301
Mani Chandel7a91d512014-07-24 16:27:08 +0530302Attribute `sync-c`: Set to true to only sync the given Git
David Pursehouse4e465202012-11-27 22:20:10 +0900303branch (specified in the `revision` attribute) rather than the
304whole ref space.
305
Mani Chandel7a91d512014-07-24 16:27:08 +0530306Attribute `sync-s`: Set to true to also sync sub-projects.
David Pursehouse4e465202012-11-27 22:20:10 +0900307
Nasser Grainawi909d58b2014-09-19 12:13:04 -0600308Attribute `upstream`: Name of the Git ref in which a sha1
David Pursehouse4e465202012-11-27 22:20:10 +0900309can be found. Used when syncing a revision locked manifest in
310-c mode to avoid having to sync the entire ref space.
311
David Pursehouseede7f122012-11-27 22:25:30 +0900312Attribute `clone-depth`: Set the depth to use when fetching this
313project. If specified, this value will override any value given
314to repo init with the --depth option on the command line.
315
Scott Fandb83b1b2013-02-28 09:34:14 +0800316Attribute `force-path`: Set to true to force this project to create the
317local mirror repository according to its `path` attribute (if supplied)
318rather than the `name` attribute. This attribute only applies to the
319local mirrors syncing, it will be ignored when syncing the projects in a
320client working directory.
321
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400322### Element extend-project
Josh Triplett884a3872014-06-12 14:57:29 -0700323
324Modify the attributes of the named project.
325
326This element is mostly useful in a local manifest file, to modify the
327attributes of an existing project without completely replacing the
328existing project definition. This makes the local manifest more robust
329against changes to the original manifest.
330
331Attribute `path`: If specified, limit the change to projects checked out
332at the specified path, rather than all projects with the given name.
333
334Attribute `groups`: List of additional groups to which this project
335belongs. Same syntax as the corresponding element of `project`.
336
Luis Hector Chavez7d525852018-03-15 09:54:08 -0700337Attribute `revision`: If specified, overrides the revision of the original
338project. Same syntax as the corresponding element of `project`.
339
Kyunam Jobd0aae92020-02-04 11:38:53 +0900340Attribute `remote`: If specified, overrides the remote of the original
341project. Same syntax as the corresponding element of `project`.
342
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400343### Element annotation
James W. Mills24c13082012-04-12 15:04:13 -0500344
345Zero or more annotation elements may be specified as children of a
346project element. Each element describes a name-value pair that will be
347exported into each project's environment during a 'forall' command,
348prefixed with REPO__. In addition, there is an optional attribute
349"keep" which accepts the case insensitive values "true" (default) or
350"false". This attribute determines whether or not the annotation will
351be kept when exported with the manifest subcommand.
352
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400353### Element copyfile
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300354
355Zero or more copyfile elements may be specified as children of a
356project element. Each element describes a src-dest pair of files;
Mike Frysinger3891b752018-10-05 19:26:15 -0400357the "src" file will be copied to the "dest" place during `repo sync`
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300358command.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400359
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300360"src" is project relative, "dest" is relative to the top of the tree.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400361Copying from paths outside of the project or to paths outside of the repo
362client is not allowed.
363
364"src" and "dest" must be files. Directories or symlinks are not allowed.
365Intermediate paths must not be symlinks either.
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300366
Mike Frysinger50d27632019-08-01 18:57:10 -0400367Parent directories of "dest" will be automatically created if missing.
368
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400369### Element linkfile
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300370
371It's just like copyfile and runs at the same time as copyfile but
372instead of copying it creates a symlink.
373
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400374The symlink is created at "dest" (relative to the top of the tree) and
Mike Frysinger04122b72019-07-31 23:32:58 -0400375points to the path specified by "src" which is a path in the project.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400376
Mike Frysinger50d27632019-08-01 18:57:10 -0400377Parent directories of "dest" will be automatically created if missing.
378
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400379The symlink target may be a file or directory, but it may not point outside
380of the repo client.
381
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400382### Element remove-project
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800383
384Deletes the named project from the internal manifest table, possibly
385allowing a subsequent project element in the same manifest file to
386replace the project with a different source.
387
David Pursehouseb1525bf2012-11-14 08:51:38 +0900388This element is mostly useful in a local manifest file, where
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800389the user can remove a project, and possibly replace it with their
390own definition.
391
Mike Frysinger51e39d52020-12-04 05:32:06 -0500392### Element repo-hooks
393
394NB: See the [practical documentation](./repo-hooks.md) for using repo hooks.
395
396Only one repo-hooks element may be specified at a time.
397Attempting to redefine it will fail to parse.
398
399Attribute `in-project`: The project where the hooks are defined. The value
400must match the `name` attribute (**not** the `path` attribute) of a previously
401defined `project` element.
402
403Attribute `enabled-list`: List of hooks to use, whitespace or comma separated.
404
Raman Tenneti1bb4fb22021-01-07 16:50:45 -0800405### Element superproject
406
407***
408 *Note*: This is currently a WIP.
409***
410
411NB: See the [git superprojects documentation](
412https://en.wikibooks.org/wiki/Git/Submodules_and_Superprojects) for background
413information.
414
415This element is used to specify the URL of the superproject. It has "name" and
416"remote" as atrributes. Only "name" is required while the others have
417reasonable defaults. At most one superproject may be specified.
418Attempting to redefine it will fail to parse.
419
420Attribute `name`: A unique name for the superproject. This attribute has the
421same meaning as project's name attribute. See the
422[element project](#element-project) for more information.
423
424Attribute `remote`: Name of a previously defined remote element.
425If not supplied the remote given by the default element is used.
426
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400427### Element include
Brian Harring26448742011-04-28 05:04:41 -0700428
429This element provides the capability of including another manifest
430file into the originating manifest. Normal rules apply for the
David Pursehouse9f3406e2012-11-14 08:52:25 +0900431target manifest to include - it must be a usable manifest on its own.
Brian Harring26448742011-04-28 05:04:41 -0700432
David Pursehouse9f3406e2012-11-14 08:52:25 +0900433Attribute `name`: the manifest to include, specified relative to
434the manifest repository's root.
Brian Harring26448742011-04-28 05:04:41 -0700435
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500436"name" may not be an absolute path or use "." or ".." path components.
437These restrictions are not enforced for [Local Manifests].
438
Fredrik de Groot352c93b2020-10-06 12:55:14 +0200439Attribute `groups`: List of additional groups to which all projects
440in the included manifest belong. This appends and recurses, meaning
441all projects in sub-manifests carry all parent include groups.
442Same syntax as the corresponding element of `project`.
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800443
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500444## Local Manifests {#local-manifests}
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800445
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900446Additional remotes and projects may be added through local manifest
447files stored in `$TOP_DIR/.repo/local_manifests/*.xml`.
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800448
449For example:
450
Mike Frysinger3891b752018-10-05 19:26:15 -0400451 $ ls .repo/local_manifests
452 local_manifest.xml
453 another_local_manifest.xml
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900454
Mike Frysinger3891b752018-10-05 19:26:15 -0400455 $ cat .repo/local_manifests/local_manifest.xml
456
457
458
459 name="tools/manifest" />
460
461 name="platform/manifest" />
462
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800463
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900464Users may add projects to the local manifest(s) prior to a `repo sync`
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800465invocation, instructing repo to automatically download and manage
466these extra projects.
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900467
David Pursehouse52f1e5d2012-11-14 04:53:24 +0900468Manifest files stored in `$TOP_DIR/.repo/local_manifests/*.xml` will
469be loaded in alphabetical order.
470
Mike Frysinger4e1fc102020-09-06 14:42:47 -0400471The legacy `$TOP_DIR/.repo/local_manifest.xml` path is no longer supported.
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500472
473
474[copyfile]: #Element-copyfile
475[linkfile]: #Element-linkfile
476[Local Manifests]: #local-manifests