summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--git_superproject.py3
-rw-r--r--manifest_xml.py6
-rw-r--r--tests/test_git_superproject.py3
-rw-r--r--tests/test_manifest_xml.py31
4 files changed, 38 insertions, 5 deletions
diff --git a/git_superproject.py b/git_superproject.py
index 5d00bd72..8b6bbcf9 100644
--- a/git_superproject.py
+++ b/git_superproject.py
@@ -295,7 +295,8 @@ class Superproject(object):
295 if not os.path.exists(self._superproject_path): 295 if not os.path.exists(self._superproject_path):
296 self._LogWarning(f'missing superproject directory: {self._superproject_path}') 296 self._LogWarning(f'missing superproject directory: {self._superproject_path}')
297 return None 297 return None
298 manifest_str = self._manifest.ToXml(groups=self._manifest.GetGroupsStr()).toxml() 298 manifest_str = self._manifest.ToXml(groups=self._manifest.GetGroupsStr(),
299 omit_local=True).toxml()
299 manifest_path = self._manifest_path 300 manifest_path = self._manifest_path
300 try: 301 try:
301 with open(manifest_path, 'w', encoding='utf-8') as fp: 302 with open(manifest_path, 'w', encoding='utf-8') as fp:
diff --git a/manifest_xml.py b/manifest_xml.py
index 32f6b687..12614c64 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -502,7 +502,8 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
502 """ 502 """
503 return [x for x in re.split(r'[,\s]+', field) if x] 503 return [x for x in re.split(r'[,\s]+', field) if x]
504 504
505 def ToXml(self, peg_rev=False, peg_rev_upstream=True, peg_rev_dest_branch=True, groups=None): 505 def ToXml(self, peg_rev=False, peg_rev_upstream=True,
506 peg_rev_dest_branch=True, groups=None, omit_local=False):
506 """Return the current manifest XML.""" 507 """Return the current manifest XML."""
507 mp = self.manifestProject 508 mp = self.manifestProject
508 509
@@ -583,6 +584,9 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
583 if not p.MatchesGroups(groups): 584 if not p.MatchesGroups(groups):
584 return 585 return
585 586
587 if omit_local and self.IsFromLocalManifest(p):
588 return
589
586 name = p.name 590 name = p.name
587 relpath = p.relpath 591 relpath = p.relpath
588 if parent: 592 if parent:
diff --git a/tests/test_git_superproject.py b/tests/test_git_superproject.py
index 603694d2..0ad9b01d 100644
--- a/tests/test_git_superproject.py
+++ b/tests/test_git_superproject.py
@@ -312,9 +312,6 @@ class SuperprojectTestCase(unittest.TestCase):
312 '<project groups="notdefault,platform-' + self.platform + '" ' 312 '<project groups="notdefault,platform-' + self.platform + '" '
313 'name="platform/art" path="art" ' 313 'name="platform/art" path="art" '
314 'revision="2c2724cb36cd5a9cec6c852c681efc3b7c6b86ea" upstream="refs/heads/main"/>' 314 'revision="2c2724cb36cd5a9cec6c852c681efc3b7c6b86ea" upstream="refs/heads/main"/>'
315 '<project clone-depth="1" groups="' + local_group + '" '
316 'name="platform/vendor/x" path="vendor/x" remote="goog" '
317 'revision="master-with-vendor"/>'
318 '<superproject name="superproject"/>' 315 '<superproject name="superproject"/>'
319 '</manifest>') 316 '</manifest>')
320 317
diff --git a/tests/test_manifest_xml.py b/tests/test_manifest_xml.py
index 85c20733..48403c0d 100644
--- a/tests/test_manifest_xml.py
+++ b/tests/test_manifest_xml.py
@@ -252,6 +252,37 @@ class XmlManifestTests(ManifestParseTestCase):
252 '<manifest></manifest>') 252 '<manifest></manifest>')
253 self.assertEqual(manifest.ToDict(), {}) 253 self.assertEqual(manifest.ToDict(), {})
254 254
255 def test_toxml_omit_local(self):
256 """Does not include local_manifests projects when omit_local=True."""
257 manifest = self.getXmlManifest(
258 '<?xml version="1.0" encoding="UTF-8"?><manifest>'
259 '<remote name="a" fetch=".."/><default remote="a" revision="r"/>'
260 '<project name="p" groups="local::me"/>'
261 '<project name="q"/>'
262 '<project name="r" groups="keep"/>'
263 '</manifest>')
264 self.assertEqual(
265 manifest.ToXml(omit_local=True).toxml(),
266 '<?xml version="1.0" ?><manifest>'
267 '<remote name="a" fetch=".."/><default remote="a" revision="r"/>'
268 '<project name="q"/><project name="r" groups="keep"/></manifest>')
269
270 def test_toxml_with_local(self):
271 """Does include local_manifests projects when omit_local=False."""
272 manifest = self.getXmlManifest(
273 '<?xml version="1.0" encoding="UTF-8"?><manifest>'
274 '<remote name="a" fetch=".."/><default remote="a" revision="r"/>'
275 '<project name="p" groups="local::me"/>'
276 '<project name="q"/>'
277 '<project name="r" groups="keep"/>'
278 '</manifest>')
279 self.assertEqual(
280 manifest.ToXml(omit_local=False).toxml(),
281 '<?xml version="1.0" ?><manifest>'
282 '<remote name="a" fetch=".."/><default remote="a" revision="r"/>'
283 '<project name="p" groups="local::me"/>'
284 '<project name="q"/><project name="r" groups="keep"/></manifest>')
285
255 def test_repo_hooks(self): 286 def test_repo_hooks(self):
256 """Check repo-hooks settings.""" 287 """Check repo-hooks settings."""
257 manifest = self.getXmlManifest(""" 288 manifest = self.getXmlManifest("""