diff options
Diffstat (limited to 'manifest_xml.py')
-rw-r--r-- | manifest_xml.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/manifest_xml.py b/manifest_xml.py index 9b7a81b3..eb8a98cc 100644 --- a/manifest_xml.py +++ b/manifest_xml.py | |||
@@ -463,6 +463,19 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md | |||
463 | ' '.join(self._repo_hooks_project.enabled_repo_hooks)) | 463 | ' '.join(self._repo_hooks_project.enabled_repo_hooks)) |
464 | root.appendChild(e) | 464 | root.appendChild(e) |
465 | 465 | ||
466 | if self._superproject: | ||
467 | root.appendChild(doc.createTextNode('')) | ||
468 | e = doc.createElement('superproject') | ||
469 | e.setAttribute('name', self._superproject['name']) | ||
470 | remoteName = None | ||
471 | if d.remote: | ||
472 | remoteName = d.remote.name | ||
473 | remote = self._superproject.get('remote') | ||
474 | if not d.remote or remote.orig_name != remoteName: | ||
475 | remoteName = remote.orig_name | ||
476 | e.setAttribute('remote', remoteName) | ||
477 | root.appendChild(e) | ||
478 | |||
466 | return doc | 479 | return doc |
467 | 480 | ||
468 | def ToDict(self, **kwargs): | 481 | def ToDict(self, **kwargs): |
@@ -473,6 +486,7 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md | |||
473 | 'default', | 486 | 'default', |
474 | 'manifest-server', | 487 | 'manifest-server', |
475 | 'repo-hooks', | 488 | 'repo-hooks', |
489 | 'superproject', | ||
476 | } | 490 | } |
477 | # Elements that may be repeated. | 491 | # Elements that may be repeated. |
478 | MULTI_ELEMENTS = { | 492 | MULTI_ELEMENTS = { |
@@ -545,6 +559,11 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md | |||
545 | return self._repo_hooks_project | 559 | return self._repo_hooks_project |
546 | 560 | ||
547 | @property | 561 | @property |
562 | def superproject(self): | ||
563 | self._Load() | ||
564 | return self._superproject | ||
565 | |||
566 | @property | ||
548 | def notice(self): | 567 | def notice(self): |
549 | self._Load() | 568 | self._Load() |
550 | return self._notice | 569 | return self._notice |
@@ -591,6 +610,7 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md | |||
591 | self._remotes = {} | 610 | self._remotes = {} |
592 | self._default = None | 611 | self._default = None |
593 | self._repo_hooks_project = None | 612 | self._repo_hooks_project = None |
613 | self._superproject = {} | ||
594 | self._notice = None | 614 | self._notice = None |
595 | self.branch = None | 615 | self.branch = None |
596 | self._manifest_server = None | 616 | self._manifest_server = None |
@@ -793,6 +813,23 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md | |||
793 | 813 | ||
794 | # Store the enabled hooks in the Project object. | 814 | # Store the enabled hooks in the Project object. |
795 | self._repo_hooks_project.enabled_repo_hooks = enabled_repo_hooks | 815 | self._repo_hooks_project.enabled_repo_hooks = enabled_repo_hooks |
816 | if node.nodeName == 'superproject': | ||
817 | name = self._reqatt(node, 'name') | ||
818 | # There can only be one superproject. | ||
819 | if self._superproject.get('name'): | ||
820 | raise ManifestParseError( | ||
821 | 'duplicate superproject in %s' % | ||
822 | (self.manifestFile)) | ||
823 | self._superproject['name'] = name | ||
824 | remote_name = node.getAttribute('remote') | ||
825 | if not remote_name: | ||
826 | remote = self._default.remote | ||
827 | else: | ||
828 | remote = self._get_remote(node) | ||
829 | if remote is None: | ||
830 | raise ManifestParseError("no remote for superproject %s within %s" % | ||
831 | (name, self.manifestFile)) | ||
832 | self._superproject['remote'] = remote.ToRemoteSpec(name) | ||
796 | if node.nodeName == 'remove-project': | 833 | if node.nodeName == 'remove-project': |
797 | name = self._reqatt(node, 'name') | 834 | name = self._reqatt(node, 'name') |
798 | 835 | ||