blob: 45fd615eaeaef3b5f2c28f7ea13f65c7d228c0fa [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?,
Raman Tenneti1c3f57e2021-05-04 12:32:13 -070034 contactinfo?,
Mike Frysinger3891b752018-10-05 19:26:15 -040035 include*)>
Chirayu Desaid5a5b192013-11-21 19:15:30 +053036
Mike Frysinger3891b752018-10-05 19:26:15 -040037
Chirayu Desaid5a5b192013-11-21 19:15:30 +053038
Mike Frysinger3891b752018-10-05 19:26:15 -040039
40
41
42
43
44
45
Chirayu Desaid5a5b192013-11-21 19:15:30 +053046
Mike Frysinger3891b752018-10-05 19:26:15 -040047
48
49
50
51
52
53
54
55
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -070056
Mike Frysinger3891b752018-10-05 19:26:15 -040057
58
Chirayu Desaid5a5b192013-11-21 19:15:30 +053059
Mike Frysinger3891b752018-10-05 19:26:15 -040060
61 project*,
62 copyfile*,
63 linkfile*)>
64
65
66
67
68
69
70
71
Kyunam Jo01019d92019-03-18 13:30:58 +090072
Mike Frysinger3891b752018-10-05 19:26:15 -040073
74
75
James W. Mills24c13082012-04-12 15:04:13 -050076
Mike Frysinger3891b752018-10-05 19:26:15 -040077
78
79
80
Chirayu Desaid5a5b192013-11-21 19:15:30 +053081
Mike Frysinger3891b752018-10-05 19:26:15 -040082
83
84
Ruslan Bilovol54527e72015-09-08 13:11:23 +030085
Mike Frysinger3891b752018-10-05 19:26:15 -040086
87
88
Ruslan Bilovol54527e72015-09-08 13:11:23 +030089
Mike Frysinger3891b752018-10-05 19:26:15 -040090
91
92
93
94
Kyunam Jobd0aae92020-02-04 11:38:53 +090095
Josh Triplett884a3872014-06-12 14:57:29 -070096
Mike Frysinger3891b752018-10-05 19:26:15 -040097
98
Doug Anderson37282b42011-03-04 11:54:18 -080099
Mike Frysinger3891b752018-10-05 19:26:15 -0400100
101
102
Brian Harring26448742011-04-28 05:04:41 -0700103
Raman Tenneti1c3f57e2021-05-04 12:32:13 -0700104
Raman Tenneti1bb4fb22021-01-07 16:50:45 -0800105
106
107
Raman Tenneti1c3f57e2021-05-04 12:32:13 -0700108
109
110
Mike Frysinger3891b752018-10-05 19:26:15 -0400111
Fredrik de Groot352c93b2020-10-06 12:55:14 +0200112
113
Mike Frysinger3891b752018-10-05 19:26:15 -0400114]>
115```
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800116
Raman Tenneti48b2d102021-01-11 12:18:47 -0800117For compatibility purposes across repo releases, all unknown elements are
118silently ignored. However, repo reserves all possible names for itself for
119future use. If you want to use custom elements, the `x-*` namespace is
120reserved for that purpose, and repo guarantees to never allocate any
121corresponding names.
122
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800123A description of the elements and their attributes follows.
124
125
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400126### Element manifest
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800127
128The root element of the file.
129
Mike Frysinger51e39d52020-12-04 05:32:06 -0500130### Element notice
131
132Arbitrary text that is displayed to users whenever `repo sync` finishes.
133The content is simply passed through as it exists in the manifest.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800134
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400135### Element remote
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800136
137One or more remote elements may be specified. Each remote element
138specifies a Git URL shared by one or more projects and (optionally)
139the Gerrit review server those projects upload changes through.
140
141Attribute `name`: A short name unique to this manifest file. The
142name specified here is used as the remote name in each project's
143.git/config, and is therefore automatically available to commands
144like `git fetch`, `git remote`, `git pull` and `git push`.
145
Yestin Sunb292b982012-07-02 07:32:50 -0700146Attribute `alias`: The alias, if specified, is used to override
147`name` to be set as the remote name in each project's .git/config.
148Its value can be duplicated while attribute `name` has to be unique
149in the manifest file. This helps each project to be able to have
150same remote name which actually points to different remote url.
151
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800152Attribute `fetch`: The Git URL prefix for all projects which use
153this remote. Each project's name is appended to this prefix to
154form the actual URL used to clone the project.
155
Steve Raed6480452016-08-10 15:00:00 -0700156Attribute `pushurl`: The Git "push" URL prefix for all projects
157which use this remote. Each project's name is appended to this
158prefix to form the actual URL used to "git push" the project.
159This attribute is optional; if not specified then "git push"
160will use the same URL as the `fetch` attribute.
161
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800162Attribute `review`: Hostname of the Gerrit server where reviews
163are uploaded to by `repo upload`. This attribute is optional;
164if not specified then `repo upload` will not function.
165
Mike Frysinger6e89c962020-11-15 18:42:26 -0500166Attribute `revision`: Name of a Git branch (e.g. `main` or
167`refs/heads/main`). Remotes with their own revision will override
Anthony King36ea2fb2014-05-06 11:54:01 +0100168the default revision.
169
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400170### Element default
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800171
172At most one default element may be specified. Its remote and
173revision attributes are used when a project element does not
174specify its own remote or revision attribute.
175
176Attribute `remote`: Name of a previously defined remote element.
177Project elements lacking a remote attribute of their own will use
178this remote.
179
Mike Frysinger6e89c962020-11-15 18:42:26 -0500180Attribute `revision`: Name of a Git branch (e.g. `main` or
181`refs/heads/main`). Project elements lacking their own
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800182revision attribute will use this revision.
183
Mike Frysinger6e89c962020-11-15 18:42:26 -0500184Attribute `dest-branch`: Name of a Git branch (e.g. `main`).
Bryan Jacobsf609f912013-05-06 13:36:24 -0400185Project elements not setting their own `dest-branch` will inherit
186this value. If this value is not set, projects will use `revision`
187by default instead.
188
Nasser Grainawida403412018-05-04 12:53:29 -0600189Attribute `upstream`: Name of the Git ref in which a sha1
190can be found. Used when syncing a revision locked manifest in
191-c mode to avoid having to sync the entire ref space. Project elements
192not setting their own `upstream` will inherit this value.
193
Mani Chandel7a91d512014-07-24 16:27:08 +0530194Attribute `sync-j`: Number of parallel jobs to use when synching.
David Pursehouse4e465202012-11-27 22:20:10 +0900195
Mani Chandel7a91d512014-07-24 16:27:08 +0530196Attribute `sync-c`: Set to true to only sync the given Git
David Pursehouse4e465202012-11-27 22:20:10 +0900197branch (specified in the `revision` attribute) rather than the
Mani Chandel7a91d512014-07-24 16:27:08 +0530198whole ref space. Project elements lacking a sync-c element of
David Pursehouse4e465202012-11-27 22:20:10 +0900199their own will use this value.
200
Mani Chandel7a91d512014-07-24 16:27:08 +0530201Attribute `sync-s`: Set to true to also sync sub-projects.
David Pursehouse4e465202012-11-27 22:20:10 +0900202
YOUNG HO CHAa32c92c2018-02-14 16:57:31 +0900203Attribute `sync-tags`: Set to false to only sync the given Git
204branch (specified in the `revision` attribute) rather than
205the other ref tags.
206
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800207
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400208### Element manifest-server
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700209
210At most one manifest-server may be specified. The url attribute
211is used to specify the URL of a manifest server, which is an
David Pursehouse9a27d012012-08-21 14:23:49 +0900212XML RPC service.
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700213
David Pursehouse9a27d012012-08-21 14:23:49 +0900214The manifest server should implement the following RPC methods:
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700215
Mike Frysinger3891b752018-10-05 19:26:15 -0400216 GetApprovedManifest(branch, target)
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700217
David Pursehouse9a27d012012-08-21 14:23:49 +0900218Return a manifest in which each project is pegged to a known good revision
David Pursehousee8688412016-04-13 17:55:34 +0900219for the current branch and target. This is used by repo sync when the
220--smart-sync option is given.
David Pursehouse9a27d012012-08-21 14:23:49 +0900221
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700222The target to use is defined by environment variables TARGET_PRODUCT
223and TARGET_BUILD_VARIANT. These variables are used to create a string
224of the form $TARGET_PRODUCT-$TARGET_BUILD_VARIANT, e.g. passion-userdebug.
225If one of those variables or both are not present, the program will call
David Pursehousedaa851f2012-08-21 13:52:18 +0900226GetApprovedManifest without the target parameter and the manifest server
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700227should choose a reasonable default target.
228
Mike Frysinger3891b752018-10-05 19:26:15 -0400229 GetManifest(tag)
David Pursehouse9a27d012012-08-21 14:23:49 +0900230
231Return a manifest in which each project is pegged to the revision at
David Pursehousee8688412016-04-13 17:55:34 +0900232the specified tag. This is used by repo sync when the --smart-tag option
233is given.
David Pursehouse9a27d012012-08-21 14:23:49 +0900234
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700235
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400236### Element project
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800237
238One or more project elements may be specified. Each element
239describes a single Git repository to be cloned into the repo
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800240client workspace. You may specify Git-submodules by creating a
241nested project. Git-submodules will be automatically
242recognized and inherit their parent's attributes, but those
243may be overridden by an explicitly specified project element.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800244
245Attribute `name`: A unique name for this project. The project's
246name is appended onto its remote's fetch URL to generate the actual
247URL to configure the Git remote with. The URL gets formed as:
248
Mike Frysinger3891b752018-10-05 19:26:15 -0400249 ${remote_fetch}/${project_name}.git
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800250
251where ${remote_fetch} is the remote's fetch attribute and
252${project_name} is the project's name attribute. The suffix ".git"
David Pursehousedaa851f2012-08-21 13:52:18 +0900253is always appended as repo assumes the upstream is a forest of
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800254bare Git repositories. If the project has a parent element, its
255name will be prefixed by the parent's.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800256
257The project name must match the name Gerrit knows, if Gerrit is
258being used for code reviews.
259
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500260"name" must not be empty, and may not be an absolute path or use "." or ".."
261path components. It is always interpreted relative to the remote's fetch
262settings, so if a different base path is needed, declare a different remote
263with the new settings needed.
264These restrictions are not enforced for [Local Manifests].
265
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800266Attribute `path`: An optional path relative to the top directory
267of the repo client where the Git working directory for this project
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500268should be placed. If not supplied the project "name" is used.
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800269If the project has a parent element, its path will be prefixed
270by the parent's.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800271
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500272"path" may not be an absolute path or use "." or ".." path components.
273These restrictions are not enforced for [Local Manifests].
274
275If you want to place files into the root of the checkout (e.g. a README or
276Makefile or another build script), use the [copyfile] or [linkfile] elements
277instead.
278
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800279Attribute `remote`: Name of a previously defined remote element.
280If not supplied the remote given by the default element is used.
281
282Attribute `revision`: Name of the Git branch the manifest wants
283to track for this project. Names can be relative to refs/heads
Mike Frysinger6e89c962020-11-15 18:42:26 -0500284(e.g. just "main") or absolute (e.g. "refs/heads/main").
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800285Tags and/or explicit SHA-1s should work in theory, but have not
286been extensively tested. If not supplied the revision given by
Anthony King36ea2fb2014-05-06 11:54:01 +0100287the remote element is used if applicable, else the default
288element is used.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800289
Mike Frysinger6e89c962020-11-15 18:42:26 -0500290Attribute `dest-branch`: Name of a Git branch (e.g. `main`).
Bryan Jacobsf609f912013-05-06 13:36:24 -0400291When using `repo upload`, changes will be submitted for code
292review on this branch. If unspecified both here and in the
293default element, `revision` is used instead.
294
Colin Cross5acde752012-03-28 20:15:45 -0700295Attribute `groups`: List of groups to which this project belongs,
Conley Owens971de8e2012-04-16 10:36:08 -0700296whitespace or comma separated. All projects belong to the group
Conley Owensbb1b5f52012-08-13 13:11:18 -0700297"all", and each project automatically belongs to a group of
298its name:`name` and path:`path`. E.g. for
Jashank Jeremy97477472020-12-12 20:50:22 +1100299``, that project
Brian Harring7da13142012-06-15 02:24:20 -0700300definition is implicitly in the following manifest groups:
Conley Owensbb1b5f52012-08-13 13:11:18 -0700301default, name:monkeys, and path:barrel-of. If you place a project in the
302group "notdefault", it will not be automatically downloaded by repo.
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800303If the project has a parent element, the `name` and `path` here
304are the prefixed ones.
Colin Cross5acde752012-03-28 20:15:45 -0700305
Mani Chandel7a91d512014-07-24 16:27:08 +0530306Attribute `sync-c`: Set to true to only sync the given Git
David Pursehouse4e465202012-11-27 22:20:10 +0900307branch (specified in the `revision` attribute) rather than the
308whole ref space.
309
Mani Chandel7a91d512014-07-24 16:27:08 +0530310Attribute `sync-s`: Set to true to also sync sub-projects.
David Pursehouse4e465202012-11-27 22:20:10 +0900311
Nasser Grainawi909d58b2014-09-19 12:13:04 -0600312Attribute `upstream`: Name of the Git ref in which a sha1
David Pursehouse4e465202012-11-27 22:20:10 +0900313can be found. Used when syncing a revision locked manifest in
314-c mode to avoid having to sync the entire ref space.
315
David Pursehouseede7f122012-11-27 22:25:30 +0900316Attribute `clone-depth`: Set the depth to use when fetching this
317project. If specified, this value will override any value given
318to repo init with the --depth option on the command line.
319
Scott Fandb83b1b2013-02-28 09:34:14 +0800320Attribute `force-path`: Set to true to force this project to create the
321local mirror repository according to its `path` attribute (if supplied)
322rather than the `name` attribute. This attribute only applies to the
323local mirrors syncing, it will be ignored when syncing the projects in a
324client working directory.
325
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400326### Element extend-project
Josh Triplett884a3872014-06-12 14:57:29 -0700327
328Modify the attributes of the named project.
329
330This element is mostly useful in a local manifest file, to modify the
331attributes of an existing project without completely replacing the
332existing project definition. This makes the local manifest more robust
333against changes to the original manifest.
334
335Attribute `path`: If specified, limit the change to projects checked out
336at the specified path, rather than all projects with the given name.
337
338Attribute `groups`: List of additional groups to which this project
339belongs. Same syntax as the corresponding element of `project`.
340
Luis Hector Chavez7d525852018-03-15 09:54:08 -0700341Attribute `revision`: If specified, overrides the revision of the original
342project. Same syntax as the corresponding element of `project`.
343
Kyunam Jobd0aae92020-02-04 11:38:53 +0900344Attribute `remote`: If specified, overrides the remote of the original
345project. Same syntax as the corresponding element of `project`.
346
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400347### Element annotation
James W. Mills24c13082012-04-12 15:04:13 -0500348
349Zero or more annotation elements may be specified as children of a
350project element. Each element describes a name-value pair that will be
351exported into each project's environment during a 'forall' command,
352prefixed with REPO__. In addition, there is an optional attribute
353"keep" which accepts the case insensitive values "true" (default) or
354"false". This attribute determines whether or not the annotation will
355be kept when exported with the manifest subcommand.
356
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400357### Element copyfile
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300358
359Zero or more copyfile elements may be specified as children of a
360project element. Each element describes a src-dest pair of files;
Mike Frysinger3891b752018-10-05 19:26:15 -0400361the "src" file will be copied to the "dest" place during `repo sync`
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300362command.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400363
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300364"src" is project relative, "dest" is relative to the top of the tree.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400365Copying from paths outside of the project or to paths outside of the repo
366client is not allowed.
367
368"src" and "dest" must be files. Directories or symlinks are not allowed.
369Intermediate paths must not be symlinks either.
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300370
Mike Frysinger50d27632019-08-01 18:57:10 -0400371Parent directories of "dest" will be automatically created if missing.
372
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400373### Element linkfile
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300374
375It's just like copyfile and runs at the same time as copyfile but
376instead of copying it creates a symlink.
377
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400378The symlink is created at "dest" (relative to the top of the tree) and
Mike Frysinger04122b72019-07-31 23:32:58 -0400379points to the path specified by "src" which is a path in the project.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400380
Mike Frysinger50d27632019-08-01 18:57:10 -0400381Parent directories of "dest" will be automatically created if missing.
382
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400383The symlink target may be a file or directory, but it may not point outside
384of the repo client.
385
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400386### Element remove-project
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800387
388Deletes the named project from the internal manifest table, possibly
389allowing a subsequent project element in the same manifest file to
390replace the project with a different source.
391
David Pursehouseb1525bf2012-11-14 08:51:38 +0900392This element is mostly useful in a local manifest file, where
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800393the user can remove a project, and possibly replace it with their
394own definition.
395
Mike Frysinger51e39d52020-12-04 05:32:06 -0500396### Element repo-hooks
397
398NB: See the [practical documentation](./repo-hooks.md) for using repo hooks.
399
400Only one repo-hooks element may be specified at a time.
401Attempting to redefine it will fail to parse.
402
403Attribute `in-project`: The project where the hooks are defined. The value
404must match the `name` attribute (**not** the `path` attribute) of a previously
405defined `project` element.
406
407Attribute `enabled-list`: List of hooks to use, whitespace or comma separated.
408
Raman Tenneti1bb4fb22021-01-07 16:50:45 -0800409### Element superproject
410
411***
Raman Tenneti1c3f57e2021-05-04 12:32:13 -0700412*Note*: This is currently a WIP.
Raman Tenneti1bb4fb22021-01-07 16:50:45 -0800413***
414
415NB: See the [git superprojects documentation](
416https://en.wikibooks.org/wiki/Git/Submodules_and_Superprojects) for background
417information.
418
419This element is used to specify the URL of the superproject. It has "name" and
420"remote" as atrributes. Only "name" is required while the others have
421reasonable defaults. At most one superproject may be specified.
422Attempting to redefine it will fail to parse.
423
424Attribute `name`: A unique name for the superproject. This attribute has the
425same meaning as project's name attribute. See the
426[element project](#element-project) for more information.
427
428Attribute `remote`: Name of a previously defined remote element.
429If not supplied the remote given by the default element is used.
430
Raman Tenneti1c3f57e2021-05-04 12:32:13 -0700431### Element contactinfo
432
433***
434*Note*: This is currently a WIP.
435***
436
437This element is used to let manifest authors self-register contact info.
438It has "bugurl" as a required atrribute. This element can be repeated,
439and any later entries will clobber earlier ones. This would allow manifest
440authors who extend manifests to specify their own contact info.
441
442Attribute `bugurl`: The URL to file a bug against the manifest owner.
443
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400444### Element include
Brian Harring26448742011-04-28 05:04:41 -0700445
446This element provides the capability of including another manifest
447file into the originating manifest. Normal rules apply for the
David Pursehouse9f3406e2012-11-14 08:52:25 +0900448target manifest to include - it must be a usable manifest on its own.
Brian Harring26448742011-04-28 05:04:41 -0700449
David Pursehouse9f3406e2012-11-14 08:52:25 +0900450Attribute `name`: the manifest to include, specified relative to
451the manifest repository's root.
Brian Harring26448742011-04-28 05:04:41 -0700452
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500453"name" may not be an absolute path or use "." or ".." path components.
454These restrictions are not enforced for [Local Manifests].
455
Fredrik de Groot352c93b2020-10-06 12:55:14 +0200456Attribute `groups`: List of additional groups to which all projects
457in the included manifest belong. This appends and recurses, meaning
458all projects in sub-manifests carry all parent include groups.
459Same syntax as the corresponding element of `project`.
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800460
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500461## Local Manifests {#local-manifests}
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800462
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900463Additional remotes and projects may be added through local manifest
464files stored in `$TOP_DIR/.repo/local_manifests/*.xml`.
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800465
466For example:
467
Mike Frysinger3891b752018-10-05 19:26:15 -0400468 $ ls .repo/local_manifests
469 local_manifest.xml
470 another_local_manifest.xml
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900471
Mike Frysinger3891b752018-10-05 19:26:15 -0400472 $ cat .repo/local_manifests/local_manifest.xml
473
474
475
476 name="tools/manifest" />
477
478 name="platform/manifest" />
479
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800480
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900481Users may add projects to the local manifest(s) prior to a `repo sync`
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800482invocation, instructing repo to automatically download and manage
483these extra projects.
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900484
David Pursehouse52f1e5d2012-11-14 04:53:24 +0900485Manifest files stored in `$TOP_DIR/.repo/local_manifests/*.xml` will
486be loaded in alphabetical order.
487
Raman Tenneti78f4dd32021-06-07 13:27:37 -0700488Projects from local manifest files are added into
489local:: group.
490
Mike Frysinger4e1fc102020-09-06 14:42:47 -0400491The legacy `$TOP_DIR/.repo/local_manifest.xml` path is no longer supported.
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500492
493
494[copyfile]: #Element-copyfile
495[linkfile]: #Element-linkfile
496[Local Manifests]: #local-manifests