diff options
author | Gavin Mak <gavinmak@google.com> | 2025-05-05 14:13:48 -0700 |
---|---|---|
committer | LUCI <gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2025-05-05 15:10:49 -0700 |
commit | 8d37f6147174fe170cc00a1d82b1cc5fe8ec0a7b (patch) | |
tree | ed1f7413c2e9093243b7f4d83377e2a72d47742e | |
parent | 1acbc14c34f264e0158436dc3d0265d500848462 (diff) | |
download | git-repo-main.tar.gz |
upload: Add superproject identifier as push optionmain
When uploading, add the root superproject repo as a push option in the
format `-o custom-keyed-value=rootRepo:$HOST/$PROJECT`.
Bug: b/401147338
Change-Id: I00230256eb7ae307b03840bb4090c28dc8a0505e
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/472601
Reviewed-by: Josip Sokcevic <sokcevic@chromium.org>
Tested-by: Gavin Mak <gavinmak@google.com>
Commit-Queue: Gavin Mak <gavinmak@google.com>
-rw-r--r-- | git_superproject.py | 18 | ||||
-rw-r--r-- | subcmds/upload.py | 9 |
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 | |||
28 | import sys | 28 | import sys |
29 | import time | 29 | import time |
30 | from typing import NamedTuple | 30 | from typing import NamedTuple |
31 | import urllib.parse | ||
31 | 32 | ||
32 | from git_command import git_require | 33 | from git_command import git_require |
33 | from git_command import GitCommand | 34 | from 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 | ||