Move local-manifest check to manifest_xml.py

This removes the need for git_superproject to include manifest_xml, and
puts the logic for local_manifest detection in one place.

Change-Id: I4d33ded0542ceea4606a1ea24304f678de20c59e
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/330499
Tested-by: LaMont Jones <lamontjones@google.com>
Reviewed-by: Raman Tenneti <rtenneti@google.com>
diff --git a/git_superproject.py b/git_superproject.py
index 4ca84a5..237e57e 100644
--- a/git_superproject.py
+++ b/git_superproject.py
@@ -32,7 +32,6 @@
 from git_command import git_require, GitCommand
 from git_config import RepoConfig
 from git_refs import R_HEADS
-from manifest_xml import LOCAL_MANIFEST_GROUP_PREFIX
 
 _SUPERPROJECT_GIT_NAME = 'superproject.git'
 _SUPERPROJECT_MANIFEST_NAME = 'superproject_override.xml'
@@ -311,7 +310,7 @@
     if project.revisionId:
       return True
     # Skip the project if it comes from the local manifest.
-    return any(s.startswith(LOCAL_MANIFEST_GROUP_PREFIX) for s in project.groups)
+    return project.manifest.IsFromLocalManifest(project)
 
   def UpdateProjectsRevisionId(self, projects):
     """Update revisionId of every project in projects with the commit id.
diff --git a/manifest_xml.py b/manifest_xml.py
index daf85d3..7c5906d 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -650,6 +650,12 @@
   def HasLocalManifests(self):
     return self._load_local_manifests and self.local_manifests
 
+  def IsFromLocalManifest(self, project):
+    """Is the project from a local manifest?
+    """
+    return any(x.startswith(LOCAL_MANIFEST_GROUP_PREFIX)
+               for x in project.groups)
+
   @property
   def IsMirror(self):
     return self.manifestProject.config.GetBoolean('repo.mirror')