blob: 8e0049b3aa04717fe40bf5cfca617126b61e1051 [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
Jack Neus6ea0cae2021-07-20 20:52:33 +000039
Mike Frysinger3891b752018-10-05 19:26:15 -040040
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
Michael Kelly37c21c22020-06-13 02:10:40 -070093
Mike Frysinger3891b752018-10-05 19:26:15 -040094
95
Kyunam Jobd0aae92020-02-04 11:38:53 +090096
Josh Triplett884a3872014-06-12 14:57:29 -070097
Mike Frysinger3891b752018-10-05 19:26:15 -040098
99
Michael Kelly06da9982021-06-30 01:58:28 -0700100
Doug Anderson37282b42011-03-04 11:54:18 -0800101
Mike Frysinger3891b752018-10-05 19:26:15 -0400102
103
104
Brian Harring26448742011-04-28 05:04:41 -0700105
Raman Tenneti1c3f57e2021-05-04 12:32:13 -0700106
Xin Lie0b16a22021-09-26 23:20:32 -0700107
108
109
Raman Tenneti1bb4fb22021-01-07 16:50:45 -0800110
Raman Tenneti1c3f57e2021-05-04 12:32:13 -0700111
112
113
Mike Frysinger3891b752018-10-05 19:26:15 -0400114
Fredrik de Groot352c93b2020-10-06 12:55:14 +0200115
116
Mike Frysinger3891b752018-10-05 19:26:15 -0400117]>
118```
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800119
Raman Tenneti48b2d102021-01-11 12:18:47 -0800120For compatibility purposes across repo releases, all unknown elements are
121silently ignored. However, repo reserves all possible names for itself for
122future use. If you want to use custom elements, the `x-*` namespace is
123reserved for that purpose, and repo guarantees to never allocate any
124corresponding names.
125
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800126A description of the elements and their attributes follows.
127
128
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400129### Element manifest
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800130
131The root element of the file.
132
Mike Frysinger51e39d52020-12-04 05:32:06 -0500133### Element notice
134
135Arbitrary text that is displayed to users whenever `repo sync` finishes.
136The content is simply passed through as it exists in the manifest.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800137
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400138### Element remote
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800139
140One or more remote elements may be specified. Each remote element
141specifies a Git URL shared by one or more projects and (optionally)
142the Gerrit review server those projects upload changes through.
143
144Attribute `name`: A short name unique to this manifest file. The
145name specified here is used as the remote name in each project's
146.git/config, and is therefore automatically available to commands
147like `git fetch`, `git remote`, `git pull` and `git push`.
148
Yestin Sunb292b982012-07-02 07:32:50 -0700149Attribute `alias`: The alias, if specified, is used to override
150`name` to be set as the remote name in each project's .git/config.
151Its value can be duplicated while attribute `name` has to be unique
152in the manifest file. This helps each project to be able to have
153same remote name which actually points to different remote url.
154
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800155Attribute `fetch`: The Git URL prefix for all projects which use
156this remote. Each project's name is appended to this prefix to
157form the actual URL used to clone the project.
158
Steve Raed6480452016-08-10 15:00:00 -0700159Attribute `pushurl`: The Git "push" URL prefix for all projects
160which use this remote. Each project's name is appended to this
161prefix to form the actual URL used to "git push" the project.
162This attribute is optional; if not specified then "git push"
163will use the same URL as the `fetch` attribute.
164
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800165Attribute `review`: Hostname of the Gerrit server where reviews
166are uploaded to by `repo upload`. This attribute is optional;
167if not specified then `repo upload` will not function.
168
Mike Frysinger6e89c962020-11-15 18:42:26 -0500169Attribute `revision`: Name of a Git branch (e.g. `main` or
170`refs/heads/main`). Remotes with their own revision will override
Anthony King36ea2fb2014-05-06 11:54:01 +0100171the default revision.
172
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400173### Element default
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800174
175At most one default element may be specified. Its remote and
176revision attributes are used when a project element does not
177specify its own remote or revision attribute.
178
179Attribute `remote`: Name of a previously defined remote element.
180Project elements lacking a remote attribute of their own will use
181this remote.
182
Mike Frysinger6e89c962020-11-15 18:42:26 -0500183Attribute `revision`: Name of a Git branch (e.g. `main` or
184`refs/heads/main`). Project elements lacking their own
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800185revision attribute will use this revision.
186
Mike Frysinger6e89c962020-11-15 18:42:26 -0500187Attribute `dest-branch`: Name of a Git branch (e.g. `main`).
Bryan Jacobsf609f912013-05-06 13:36:24 -0400188Project elements not setting their own `dest-branch` will inherit
189this value. If this value is not set, projects will use `revision`
190by default instead.
191
Nasser Grainawida403412018-05-04 12:53:29 -0600192Attribute `upstream`: Name of the Git ref in which a sha1
193can be found. Used when syncing a revision locked manifest in
194-c mode to avoid having to sync the entire ref space. Project elements
195not setting their own `upstream` will inherit this value.
196
Mani Chandel7a91d512014-07-24 16:27:08 +0530197Attribute `sync-j`: Number of parallel jobs to use when synching.
David Pursehouse4e465202012-11-27 22:20:10 +0900198
Mani Chandel7a91d512014-07-24 16:27:08 +0530199Attribute `sync-c`: Set to true to only sync the given Git
David Pursehouse4e465202012-11-27 22:20:10 +0900200branch (specified in the `revision` attribute) rather than the
Mani Chandel7a91d512014-07-24 16:27:08 +0530201whole ref space. Project elements lacking a sync-c element of
David Pursehouse4e465202012-11-27 22:20:10 +0900202their own will use this value.
203
Mani Chandel7a91d512014-07-24 16:27:08 +0530204Attribute `sync-s`: Set to true to also sync sub-projects.
David Pursehouse4e465202012-11-27 22:20:10 +0900205
YOUNG HO CHAa32c92c2018-02-14 16:57:31 +0900206Attribute `sync-tags`: Set to false to only sync the given Git
207branch (specified in the `revision` attribute) rather than
208the other ref tags.
209
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800210
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400211### Element manifest-server
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700212
213At most one manifest-server may be specified. The url attribute
214is used to specify the URL of a manifest server, which is an
David Pursehouse9a27d012012-08-21 14:23:49 +0900215XML RPC service.
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700216
David Pursehouse9a27d012012-08-21 14:23:49 +0900217The manifest server should implement the following RPC methods:
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700218
Mike Frysinger3891b752018-10-05 19:26:15 -0400219 GetApprovedManifest(branch, target)
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700220
David Pursehouse9a27d012012-08-21 14:23:49 +0900221Return a manifest in which each project is pegged to a known good revision
David Pursehousee8688412016-04-13 17:55:34 +0900222for the current branch and target. This is used by repo sync when the
223--smart-sync option is given.
David Pursehouse9a27d012012-08-21 14:23:49 +0900224
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700225The target to use is defined by environment variables TARGET_PRODUCT
226and TARGET_BUILD_VARIANT. These variables are used to create a string
227of the form $TARGET_PRODUCT-$TARGET_BUILD_VARIANT, e.g. passion-userdebug.
228If one of those variables or both are not present, the program will call
David Pursehousedaa851f2012-08-21 13:52:18 +0900229GetApprovedManifest without the target parameter and the manifest server
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700230should choose a reasonable default target.
231
Mike Frysinger3891b752018-10-05 19:26:15 -0400232 GetManifest(tag)
David Pursehouse9a27d012012-08-21 14:23:49 +0900233
234Return a manifest in which each project is pegged to the revision at
David Pursehousee8688412016-04-13 17:55:34 +0900235the specified tag. This is used by repo sync when the --smart-tag option
236is given.
David Pursehouse9a27d012012-08-21 14:23:49 +0900237
Nico Sallembiena1bfd2c2010-04-06 10:40:01 -0700238
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400239### Element project
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800240
241One or more project elements may be specified. Each element
242describes a single Git repository to be cloned into the repo
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800243client workspace. You may specify Git-submodules by creating a
244nested project. Git-submodules will be automatically
245recognized and inherit their parent's attributes, but those
246may be overridden by an explicitly specified project element.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800247
248Attribute `name`: A unique name for this project. The project's
249name is appended onto its remote's fetch URL to generate the actual
250URL to configure the Git remote with. The URL gets formed as:
251
Mike Frysinger3891b752018-10-05 19:26:15 -0400252 ${remote_fetch}/${project_name}.git
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800253
254where ${remote_fetch} is the remote's fetch attribute and
255${project_name} is the project's name attribute. The suffix ".git"
David Pursehousedaa851f2012-08-21 13:52:18 +0900256is always appended as repo assumes the upstream is a forest of
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800257bare Git repositories. If the project has a parent element, its
258name will be prefixed by the parent's.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800259
260The project name must match the name Gerrit knows, if Gerrit is
261being used for code reviews.
262
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500263"name" must not be empty, and may not be an absolute path or use "." or ".."
264path components. It is always interpreted relative to the remote's fetch
265settings, so if a different base path is needed, declare a different remote
266with the new settings needed.
267These restrictions are not enforced for [Local Manifests].
268
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800269Attribute `path`: An optional path relative to the top directory
270of the repo client where the Git working directory for this project
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500271should be placed. If not supplied the project "name" is used.
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800272If the project has a parent element, its path will be prefixed
273by the parent's.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800274
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500275"path" may not be an absolute path or use "." or ".." path components.
276These restrictions are not enforced for [Local Manifests].
277
278If you want to place files into the root of the checkout (e.g. a README or
279Makefile or another build script), use the [copyfile] or [linkfile] elements
280instead.
281
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800282Attribute `remote`: Name of a previously defined remote element.
283If not supplied the remote given by the default element is used.
284
285Attribute `revision`: Name of the Git branch the manifest wants
286to track for this project. Names can be relative to refs/heads
Mike Frysinger6e89c962020-11-15 18:42:26 -0500287(e.g. just "main") or absolute (e.g. "refs/heads/main").
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800288Tags and/or explicit SHA-1s should work in theory, but have not
289been extensively tested. If not supplied the revision given by
Anthony King36ea2fb2014-05-06 11:54:01 +0100290the remote element is used if applicable, else the default
291element is used.
Shawn O. Pearce3e548192008-11-04 11:19:36 -0800292
Mike Frysinger6e89c962020-11-15 18:42:26 -0500293Attribute `dest-branch`: Name of a Git branch (e.g. `main`).
Bryan Jacobsf609f912013-05-06 13:36:24 -0400294When using `repo upload`, changes will be submitted for code
295review on this branch. If unspecified both here and in the
296default element, `revision` is used instead.
297
Colin Cross5acde752012-03-28 20:15:45 -0700298Attribute `groups`: List of groups to which this project belongs,
Conley Owens971de8e2012-04-16 10:36:08 -0700299whitespace or comma separated. All projects belong to the group
Conley Owensbb1b5f52012-08-13 13:11:18 -0700300"all", and each project automatically belongs to a group of
301its name:`name` and path:`path`. E.g. for
Jashank Jeremy97477472020-12-12 20:50:22 +1100302``, that project
Brian Harring7da13142012-06-15 02:24:20 -0700303definition is implicitly in the following manifest groups:
Conley Owensbb1b5f52012-08-13 13:11:18 -0700304default, name:monkeys, and path:barrel-of. If you place a project in the
305group "notdefault", it will not be automatically downloaded by repo.
Che-Liang Chioub2bd91c2012-01-11 11:28:42 +0800306If the project has a parent element, the `name` and `path` here
307are the prefixed ones.
Colin Cross5acde752012-03-28 20:15:45 -0700308
Mani Chandel7a91d512014-07-24 16:27:08 +0530309Attribute `sync-c`: Set to true to only sync the given Git
David Pursehouse4e465202012-11-27 22:20:10 +0900310branch (specified in the `revision` attribute) rather than the
311whole ref space.
312
Mani Chandel7a91d512014-07-24 16:27:08 +0530313Attribute `sync-s`: Set to true to also sync sub-projects.
David Pursehouse4e465202012-11-27 22:20:10 +0900314
Nasser Grainawi909d58b2014-09-19 12:13:04 -0600315Attribute `upstream`: Name of the Git ref in which a sha1
David Pursehouse4e465202012-11-27 22:20:10 +0900316can be found. Used when syncing a revision locked manifest in
317-c mode to avoid having to sync the entire ref space.
318
David Pursehouseede7f122012-11-27 22:25:30 +0900319Attribute `clone-depth`: Set the depth to use when fetching this
320project. If specified, this value will override any value given
321to repo init with the --depth option on the command line.
322
Scott Fandb83b1b2013-02-28 09:34:14 +0800323Attribute `force-path`: Set to true to force this project to create the
324local mirror repository according to its `path` attribute (if supplied)
325rather than the `name` attribute. This attribute only applies to the
326local mirrors syncing, it will be ignored when syncing the projects in a
327client working directory.
328
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400329### Element extend-project
Josh Triplett884a3872014-06-12 14:57:29 -0700330
331Modify the attributes of the named project.
332
333This element is mostly useful in a local manifest file, to modify the
334attributes of an existing project without completely replacing the
335existing project definition. This makes the local manifest more robust
336against changes to the original manifest.
337
338Attribute `path`: If specified, limit the change to projects checked out
339at the specified path, rather than all projects with the given name.
340
Michael Kelly37c21c22020-06-13 02:10:40 -0700341Attribute `dest-path`: If specified, a path relative to the top directory
342of the repo client where the Git working directory for this project
343should be placed. This is used to move a project in the checkout by
344overriding the existing `path` setting.
345
Josh Triplett884a3872014-06-12 14:57:29 -0700346Attribute `groups`: List of additional groups to which this project
347belongs. Same syntax as the corresponding element of `project`.
348
Luis Hector Chavez7d525852018-03-15 09:54:08 -0700349Attribute `revision`: If specified, overrides the revision of the original
350project. Same syntax as the corresponding element of `project`.
351
Kyunam Jobd0aae92020-02-04 11:38:53 +0900352Attribute `remote`: If specified, overrides the remote of the original
353project. Same syntax as the corresponding element of `project`.
354
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400355### Element annotation
James W. Mills24c13082012-04-12 15:04:13 -0500356
357Zero or more annotation elements may be specified as children of a
Jack Neus6ea0cae2021-07-20 20:52:33 +0000358project or remote element. Each element describes a name-value pair.
359For projects, this name-value pair will be exported into each project's
360environment during a 'forall' command, prefixed with `REPO__`. In addition,
361there is an optional attribute "keep" which accepts the case insensitive values
362"true" (default) or "false". This attribute determines whether or not the
363annotation will be kept when exported with the manifest subcommand.
James W. Mills24c13082012-04-12 15:04:13 -0500364
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400365### Element copyfile
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300366
367Zero or more copyfile elements may be specified as children of a
368project element. Each element describes a src-dest pair of files;
Mike Frysinger3891b752018-10-05 19:26:15 -0400369the "src" file will be copied to the "dest" place during `repo sync`
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300370command.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400371
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300372"src" is project relative, "dest" is relative to the top of the tree.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400373Copying from paths outside of the project or to paths outside of the repo
374client is not allowed.
375
376"src" and "dest" must be files. Directories or symlinks are not allowed.
377Intermediate paths must not be symlinks either.
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300378
Mike Frysinger50d27632019-08-01 18:57:10 -0400379Parent directories of "dest" will be automatically created if missing.
380
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400381### Element linkfile
Ruslan Bilovol54527e72015-09-08 13:11:23 +0300382
383It's just like copyfile and runs at the same time as copyfile but
384instead of copying it creates a symlink.
385
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400386The symlink is created at "dest" (relative to the top of the tree) and
Mike Frysinger04122b72019-07-31 23:32:58 -0400387points to the path specified by "src" which is a path in the project.
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400388
Mike Frysinger50d27632019-08-01 18:57:10 -0400389Parent directories of "dest" will be automatically created if missing.
390
Mike Frysingerc5b172a2019-07-31 17:34:23 -0400391The symlink target may be a file or directory, but it may not point outside
392of the repo client.
393
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400394### Element remove-project
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800395
396Deletes the named project from the internal manifest table, possibly
397allowing a subsequent project element in the same manifest file to
398replace the project with a different source.
399
David Pursehouseb1525bf2012-11-14 08:51:38 +0900400This element is mostly useful in a local manifest file, where
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800401the user can remove a project, and possibly replace it with their
402own definition.
403
Michael Kelly06da9982021-06-30 01:58:28 -0700404Attribute `optional`: Set to true to ignore remove-project elements with no
405matching `project` element.
406
Mike Frysinger51e39d52020-12-04 05:32:06 -0500407### Element repo-hooks
408
409NB: See the [practical documentation](./repo-hooks.md) for using repo hooks.
410
411Only one repo-hooks element may be specified at a time.
412Attempting to redefine it will fail to parse.
413
414Attribute `in-project`: The project where the hooks are defined. The value
415must match the `name` attribute (**not** the `path` attribute) of a previously
416defined `project` element.
417
418Attribute `enabled-list`: List of hooks to use, whitespace or comma separated.
419
Raman Tenneti1bb4fb22021-01-07 16:50:45 -0800420### Element superproject
421
422***
Raman Tenneti1c3f57e2021-05-04 12:32:13 -0700423*Note*: This is currently a WIP.
Raman Tenneti1bb4fb22021-01-07 16:50:45 -0800424***
425
426NB: See the [git superprojects documentation](
427https://en.wikibooks.org/wiki/Git/Submodules_and_Superprojects) for background
428information.
429
430This element is used to specify the URL of the superproject. It has "name" and
431"remote" as atrributes. Only "name" is required while the others have
432reasonable defaults. At most one superproject may be specified.
433Attempting to redefine it will fail to parse.
434
435Attribute `name`: A unique name for the superproject. This attribute has the
436same meaning as project's name attribute. See the
437[element project](#element-project) for more information.
438
439Attribute `remote`: Name of a previously defined remote element.
440If not supplied the remote given by the default element is used.
441
Xin Lie0b16a22021-09-26 23:20:32 -0700442Attribute `revision`: Name of the Git branch the manifest wants
443to track for this superproject. If not supplied the revision given
444by the remote element is used if applicable, else the default
445element is used.
446
Raman Tenneti1c3f57e2021-05-04 12:32:13 -0700447### Element contactinfo
448
449***
450*Note*: This is currently a WIP.
451***
452
453This element is used to let manifest authors self-register contact info.
454It has "bugurl" as a required atrribute. This element can be repeated,
455and any later entries will clobber earlier ones. This would allow manifest
456authors who extend manifests to specify their own contact info.
457
458Attribute `bugurl`: The URL to file a bug against the manifest owner.
459
Mike Frysingerb8f7bb02018-10-10 01:05:11 -0400460### Element include
Brian Harring26448742011-04-28 05:04:41 -0700461
462This element provides the capability of including another manifest
463file into the originating manifest. Normal rules apply for the
David Pursehouse9f3406e2012-11-14 08:52:25 +0900464target manifest to include - it must be a usable manifest on its own.
Brian Harring26448742011-04-28 05:04:41 -0700465
David Pursehouse9f3406e2012-11-14 08:52:25 +0900466Attribute `name`: the manifest to include, specified relative to
467the manifest repository's root.
Brian Harring26448742011-04-28 05:04:41 -0700468
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500469"name" may not be an absolute path or use "." or ".." path components.
470These restrictions are not enforced for [Local Manifests].
471
Fredrik de Groot352c93b2020-10-06 12:55:14 +0200472Attribute `groups`: List of additional groups to which all projects
473in the included manifest belong. This appends and recurses, meaning
474all projects in sub-manifests carry all parent include groups.
475Same syntax as the corresponding element of `project`.
Shawn O. Pearce03eaf072008-11-20 11:42:22 -0800476
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500477## Local Manifests {#local-manifests}
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800478
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900479Additional remotes and projects may be added through local manifest
480files stored in `$TOP_DIR/.repo/local_manifests/*.xml`.
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800481
482For example:
483
Mike Frysinger3891b752018-10-05 19:26:15 -0400484 $ ls .repo/local_manifests
485 local_manifest.xml
486 another_local_manifest.xml
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900487
Mike Frysinger3891b752018-10-05 19:26:15 -0400488 $ cat .repo/local_manifests/local_manifest.xml
489
490
491
492 name="tools/manifest" />
493
494 name="platform/manifest" />
495
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800496
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900497Users may add projects to the local manifest(s) prior to a `repo sync`
Shawn O. Pearce70cd4ab2008-11-06 08:48:44 -0800498invocation, instructing repo to automatically download and manage
499these extra projects.
David Pursehouse2d5a0df2012-11-13 02:50:36 +0900500
David Pursehouse52f1e5d2012-11-14 04:53:24 +0900501Manifest files stored in `$TOP_DIR/.repo/local_manifests/*.xml` will
502be loaded in alphabetical order.
503
Raman Tenneti78f4dd32021-06-07 13:27:37 -0700504Projects from local manifest files are added into
505local:: group.
506
Mike Frysinger4e1fc102020-09-06 14:42:47 -0400507The legacy `$TOP_DIR/.repo/local_manifest.xml` path is no longer supported.
Mike Frysinger68d5d4d2021-03-09 11:56:24 -0500508
509
510[copyfile]: #Element-copyfile
511[linkfile]: #Element-linkfile
512[Local Manifests]: #local-manifests