mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
manifest_xml: change .repo/manifest.xml to a plain file
Changing this to a file instead of using a symlink serves two purposes: * We can insert some comments & doc links to help users learn what this is for, discover relevant documentation, and to discourage them from modifying things. * Windows requires Administrator access to use symlinks. With this last change, Windows users can get repo client checkouts with the new --worktree option and not need symlinks anywhere at all. Which means they no longer need to be an Administrator in order to `repo sync`. Change-Id: I9bc46824fd8d4b0f446ba84bd764994ca1e597e2 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256313 Tested-by: Mike Frysinger <vapier@google.com> Reviewed-by: David Pursehouse <dpursehouse@collab.net>
This commit is contained in:
parent
7951e14385
commit
a269b1cb9d
@ -68,13 +68,20 @@ support, see the [manifest-format.md] file.
|
|||||||
If you want to switch the tracking settings, re-run `repo init` with the
|
If you want to switch the tracking settings, re-run `repo init` with the
|
||||||
new settings.
|
new settings.
|
||||||
|
|
||||||
|
* `manifest.xml`: The manifest that repo uses. It is generated at `repo init`
|
||||||
|
and uses the `--manifest-name` to determine what manifest file to load next
|
||||||
|
out of `manifests/`.
|
||||||
|
|
||||||
|
Do not try to modify this to load other manifests as it will confuse repo.
|
||||||
|
If you want to switch manifest files, re-run `repo init` with the new
|
||||||
|
setting.
|
||||||
|
|
||||||
|
Older versions of repo managed this with symlinks.
|
||||||
|
|
||||||
* `manifest.xml -> manifests/<manifest-name>.xml`: A symlink to the manifest
|
* `manifest.xml -> manifests/<manifest-name>.xml`: A symlink to the manifest
|
||||||
that the user wishes to sync. It is specified at `repo init` time via
|
that the user wishes to sync. It is specified at `repo init` time via
|
||||||
`--manifest-name`.
|
`--manifest-name`.
|
||||||
|
|
||||||
Do not try to repoint this symlink to other files as it will confuse repo.
|
|
||||||
If you want to switch manifest files, re-run `repo init` with the new
|
|
||||||
setting.
|
|
||||||
|
|
||||||
* `manifests.git/.repo_config.json`: JSON cache of the `manifests.git/config`
|
* `manifests.git/.repo_config.json`: JSON cache of the `manifests.git/config`
|
||||||
file for repo to read/process quickly.
|
file for repo to read/process quickly.
|
||||||
|
@ -191,12 +191,27 @@ class XmlManifest(object):
|
|||||||
"""
|
"""
|
||||||
self.Override(name)
|
self.Override(name)
|
||||||
|
|
||||||
try:
|
# Old versions of repo would generate symlinks we need to clean up.
|
||||||
if os.path.lexists(self.manifestFile):
|
if os.path.lexists(self.manifestFile):
|
||||||
platform_utils.remove(self.manifestFile)
|
platform_utils.remove(self.manifestFile)
|
||||||
platform_utils.symlink(os.path.join('manifests', name), self.manifestFile)
|
# This file is interpreted as if it existed inside the manifest repo.
|
||||||
except OSError as e:
|
# That allows us to use <include> with the relative file name.
|
||||||
raise ManifestParseError('cannot link manifest %s: %s' % (name, str(e)))
|
with open(self.manifestFile, 'w') as fp:
|
||||||
|
fp.write("""<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT EDIT THIS FILE! It is generated by repo and changes will be discarded.
|
||||||
|
If you want to use a different manifest, use `repo init -m <file>` instead.
|
||||||
|
|
||||||
|
If you want to customize your checkout by overriding manifest settings, use
|
||||||
|
the local_manifests/ directory instead.
|
||||||
|
|
||||||
|
For more information on repo manifests, check out:
|
||||||
|
https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
|
||||||
|
-->
|
||||||
|
<manifest>
|
||||||
|
<include name="%s" />
|
||||||
|
</manifest>
|
||||||
|
""" % (name,))
|
||||||
|
|
||||||
def _RemoteToXml(self, r, doc, root):
|
def _RemoteToXml(self, r, doc, root):
|
||||||
e = doc.createElement('remote')
|
e = doc.createElement('remote')
|
||||||
|
Loading…
Reference in New Issue
Block a user