summaryrefslogtreecommitdiffstats
path: root/manifest_xml.py
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2021-09-26 23:20:32 -0700
committerXin Li <delphij@google.com>2021-09-27 06:36:05 +0000
commite0b16a22a01c54a00a9e4a0c53dddfce3b0d59d6 (patch)
tree7759c55cdbe045de3974be17bc3a5557d42619db /manifest_xml.py
parentd669d2dee5bd7986593d5df1dd8a736778501bbf (diff)
downloadgit-repo-e0b16a22a01c54a00a9e4a0c53dddfce3b0d59d6.tar.gz
superproject: support a new revision attribute.
Tested: $ ./run_tests Verified that a manifest that specified superproject revision would use the specified revision, and superproject will use the default revision. Note that this is a slight behavior change from earlier repo versions, which would always use the branch name of the manifest itself. However, the new behavior would be more consisitent with regular "project" element and would allow superproject be used even if it is not enabled for the particular manifest branch, so we have decided to make the change as it would provide more flexibility and better matches what other elements would do. Bug: [google internal] b/187868160 Change-Id: I35255ee347aff6e65179f7879d52931f168b477e Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/317643 Tested-by: Xin Li <delphij@google.com> Reviewed-by: Raman Tenneti <rtenneti@google.com> Reviewed-by: Mike Frysinger <vapier@google.com>
Diffstat (limited to 'manifest_xml.py')
-rw-r--r--manifest_xml.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/manifest_xml.py b/manifest_xml.py
index 7099d5fe..135c91fb 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -507,6 +507,9 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
507 if not d.remote or remote.orig_name != remoteName: 507 if not d.remote or remote.orig_name != remoteName:
508 remoteName = remote.orig_name 508 remoteName = remote.orig_name
509 e.setAttribute('remote', remoteName) 509 e.setAttribute('remote', remoteName)
510 revision = remote.revision or d.revisionExpr
511 if not revision or revision != self._superproject['revision']:
512 e.setAttribute('revision', self._superproject['revision'])
510 root.appendChild(e) 513 root.appendChild(e)
511 514
512 if self._contactinfo.bugurl != Wrapper().BUG_URL: 515 if self._contactinfo.bugurl != Wrapper().BUG_URL:
@@ -914,6 +917,13 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
914 raise ManifestParseError("no remote for superproject %s within %s" % 917 raise ManifestParseError("no remote for superproject %s within %s" %
915 (name, self.manifestFile)) 918 (name, self.manifestFile))
916 self._superproject['remote'] = remote.ToRemoteSpec(name) 919 self._superproject['remote'] = remote.ToRemoteSpec(name)
920 revision = node.getAttribute('revision') or remote.revision
921 if not revision:
922 revision = self._default.revisionExpr
923 if not revision:
924 raise ManifestParseError('no revision for superproject %s within %s' %
925 (name, self.manifestFile))
926 self._superproject['revision'] = revision
917 if node.nodeName == 'contactinfo': 927 if node.nodeName == 'contactinfo':
918 bugurl = self._reqatt(node, 'bugurl') 928 bugurl = self._reqatt(node, 'bugurl')
919 # This element can be repeated, later entries will clobber earlier ones. 929 # This element can be repeated, later entries will clobber earlier ones.