manifest: Support ignoring local manifests with 'repo manifest'

Currently users need to look up the baseline manifest by loading the
specific manifest file.  This exposes them to the internals of how the
manifest is stored which may potentially be fragile (eg: It was
switched from a symlink pointing at the file in the report to an
actual file with an 'include' tag).

Instead of doing this, we can provide an option to the 'repo manifest'
command which will emit the baseline manifest and decouple users from
the internal manifest details.

Change-Id: I12ee9160feaa591484ae71f404bc529be500ae4e
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/311202
Tested-by: Michael Kelly <mkelly@arista.com>
Reviewed-by: Mike Frysinger <vapier@google.com>
diff --git a/manifest_xml.py b/manifest_xml.py
index be74bf4..22758cf 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -626,6 +626,13 @@
     return set(x.strip() for x in exclude.split(','))
 
   @property
+  def UseLocalManifests(self):
+    return self._load_local_manifests
+
+  def SetUseLocalManifests(self, value):
+    self._load_local_manifests = value
+
+  @property
   def HasLocalManifests(self):
     return self._load_local_manifests and self.local_manifests
 
diff --git a/subcmds/manifest.py b/subcmds/manifest.py
index 00587d8..0fbdeac 100644
--- a/subcmds/manifest.py
+++ b/subcmds/manifest.py
@@ -70,6 +70,8 @@
                  help='output manifest in JSON format (experimental)')
     p.add_option('--pretty', default=False, action='store_true',
                  help='format output for humans to read')
+    p.add_option('--no-local-manifests', default=False, action='store_true',
+                 dest='ignore_local_manifests', help='ignore local manifests')
     p.add_option('-o', '--output-file',
                  dest='output_file',
                  default='-',
@@ -85,6 +87,9 @@
       fd = sys.stdout
     else:
       fd = open(opt.output_file, 'w')
+
+    self.manifest.SetUseLocalManifests(not opt.ignore_local_manifests)
+
     if opt.json:
       print('warning: --json is experimental!', file=sys.stderr)
       doc = self.manifest.ToDict(peg_rev=opt.peg_rev,