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
diff --git a/docs/manifest-format.txt b/docs/manifest-format.txt
index 9589352..20ab9eb 100644
--- a/docs/manifest-format.txt
+++ b/docs/manifest-format.txt
@@ -249,7 +249,13 @@
 invocation, instructing repo to automatically download and manage
 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
 manifest, stored in `$TOP_DIR/.repo/local_manifest.xml`. This method
 is deprecated in favor of using multiple manifest files as mentioned
 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`.
diff --git a/manifest_xml.py b/manifest_xml.py
index a3e78fe..3198724 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -312,7 +312,7 @@
 
       local_dir = os.path.abspath(os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME))
       try:
-        for local_file in os.listdir(local_dir):
+        for local_file in sorted(os.listdir(local_dir)):
           if local_file.endswith('.xml'):
             try:
               nodes.append(self._ParseManifestXml(local_file, self.repodir))