Make load order of local manifests deterministic

Local manifest files stored in the local_manifests folder are loaded
in alphabetical order, so it's easier to know in which order project
removals/additions/modifications will be applied.

If local_manifests.xml exists, it will be loaded before the files in
local_manifests.

Change-Id: Ia5c0349608f1823b4662cd6b340b99915bd973d5
This commit is contained in:
David Pursehouse 2012-11-14 04:53:24 +09:00
parent 8e3d355d44
commit 52f1e5d911
2 changed files with 7 additions and 1 deletions

View File

@ -249,7 +249,13 @@ Users may add projects to the local manifest(s) prior to a `repo sync`
invocation, instructing repo to automatically download and manage invocation, instructing repo to automatically download and manage
these extra projects. these extra projects.
Manifest files stored in `$TOP_DIR/.repo/local_manifests/*.xml` will
be loaded in alphabetical order.
Additional remotes and projects may also be added through a local Additional remotes and projects may also be added through a local
manifest, stored in `$TOP_DIR/.repo/local_manifest.xml`. This method manifest, stored in `$TOP_DIR/.repo/local_manifest.xml`. This method
is deprecated in favor of using multiple manifest files as mentioned is deprecated in favor of using multiple manifest files as mentioned
above. above.
If `$TOP_DIR/.repo/local_manifest.xml` exists, it will be loaded before
any manifest files stored in `$TOP_DIR/.repo/local_manifests/*.xml`.

View File

@ -312,7 +312,7 @@ class XmlManifest(object):
local_dir = os.path.abspath(os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME)) local_dir = os.path.abspath(os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME))
try: try:
for local_file in os.listdir(local_dir): for local_file in sorted(os.listdir(local_dir)):
if local_file.endswith('.xml'): if local_file.endswith('.xml'):
try: try:
nodes.append(self._ParseManifestXml(local_file, self.repodir)) nodes.append(self._ParseManifestXml(local_file, self.repodir))