summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--git_superproject.py18
-rw-r--r--subcmds/upload.py9
2 files changed, 26 insertions, 1 deletions
diff --git a/git_superproject.py b/git_superproject.py
index ce8161fd..aba836a3 100644
--- a/git_superproject.py
+++ b/git_superproject.py
@@ -28,6 +28,7 @@ import os
28import sys 28import sys
29import time 29import time
30from typing import NamedTuple 30from typing import NamedTuple
31import urllib.parse
31 32
32from git_command import git_require 33from git_command import git_require
33from git_command import GitCommand 34from git_command import GitCommand
@@ -140,6 +141,23 @@ class Superproject:
140 self._manifest_path if os.path.exists(self._manifest_path) else None 141 self._manifest_path if os.path.exists(self._manifest_path) else None
141 ) 142 )
142 143
144 @property
145 def repo_id(self):
146 """Returns the repo ID for the superproject.
147
148 For example, if the superproject points to:
149 https://android-review.googlesource.com/platform/superproject/
150 Then the repo_id would be:
151 android/platform/superproject
152 """
153 if review_url := self.remote.review:
154 parsed_url = urllib.parse.urlparse(review_url)
155 if netloc := parsed_url.netloc:
156 parts = netloc.split("-review", 1)
157 host = parts[0]
158 return f"{host}/{self.name}"
159 return None
160
143 def _LogMessage(self, fmt, *inputs): 161 def _LogMessage(self, fmt, *inputs):
144 """Logs message to stderr and _git_event_log.""" 162 """Logs message to stderr and _git_event_log."""
145 message = f"{self._LogMessagePrefix()} {fmt.format(*inputs)}" 163 message = f"{self._LogMessagePrefix()} {fmt.format(*inputs)}"
diff --git a/subcmds/upload.py b/subcmds/upload.py
index bac2f8ac..2837ff51 100644
--- a/subcmds/upload.py
+++ b/subcmds/upload.py
@@ -628,6 +628,13 @@ Gerrit Code Review: https://www.gerritcodereview.com/
628 branch.uploaded = False 628 branch.uploaded = False
629 return 629 return
630 630
631 # If using superproject, add the root repo as a push option.
632 manifest = branch.project.manifest
633 push_options = list(opt.push_options)
634 sp = manifest.superproject
635 if sp and sp.repo_id and manifest.manifestProject.use_superproject:
636 push_options.append(f"custom-keyed-value=rootRepo:{sp.repo_id}")
637
631 branch.UploadForReview( 638 branch.UploadForReview(
632 people, 639 people,
633 dryrun=opt.dryrun, 640 dryrun=opt.dryrun,
@@ -640,7 +647,7 @@ Gerrit Code Review: https://www.gerritcodereview.com/
640 ready=opt.ready, 647 ready=opt.ready,
641 dest_branch=destination, 648 dest_branch=destination,
642 validate_certs=opt.validate_certs, 649 validate_certs=opt.validate_certs,
643 push_options=opt.push_options, 650 push_options=push_options,
644 patchset_description=opt.patchset_description, 651 patchset_description=opt.patchset_description,
645 ) 652 )
646 653