From d99260fe02958047540bfcb97e49926adf991d28 Mon Sep 17 00:00:00 2001 From: Scott Lee Date: Thu, 22 May 2025 17:18:30 +0000 Subject: [PATCH] add --superproject-hash for repo status If the option is given, repo status prints out the superproject hash Change-Id: I5d1c709518d76d777a7f07c4c774569773c5a265 Bug: 416589884 --- git_superproject.py | 24 ++++++++++++++++++++++++ man/repo-status.1 | 5 ++++- subcmds/status.py | 11 +++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/git_superproject.py b/git_superproject.py index aba836a3c..8cfbab303 100644 --- a/git_superproject.py +++ b/git_superproject.py @@ -129,6 +129,30 @@ class Superproject: """Set the _print_messages attribute.""" self._print_messages = value + @property + def commit_id(self): + """Returns the commit ID of the superproject checkout.""" + cmd = ["rev-parse", self.revision] + p = GitCommand( + None, # project + cmd, + gitdir=self._work_git, + bare=True, + capture_stdout=True, + capture_stderr=True, + ) + retval = p.Wait() + if retval == 0: + data = p.stdout + else: + self._LogWarning( + "git rev-parse call failed, command: git {}, " + "return code: {}, stderr: {}", + cmd, + p.stdwerr, + ) + return data + @property def project_commit_ids(self): """Returns a dictionary of projects and their commit ids.""" diff --git a/man/repo-status.1 b/man/repo-status.1 index db8723fb2..c21a32d68 100644 --- a/man/repo-status.1 +++ b/man/repo-status.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man. -.TH REPO "1" "July 2022" "repo status" "Repo Manual" +.TH REPO "1" "May 2025" "repo status" "Repo Manual" .SH NAME repo \- repo status - manual page for repo status .SH SYNOPSIS @@ -21,6 +21,9 @@ number of CPU cores) \fB\-o\fR, \fB\-\-orphans\fR include objects in working directory outside of repo projects +.TP +\fB\-\-superproject\-rev\fR +print the superproject reivsion .SS Logging options: .TP \fB\-v\fR, \fB\-\-verbose\fR diff --git a/subcmds/status.py b/subcmds/status.py index cda73627f..f13e8c54e 100644 --- a/subcmds/status.py +++ b/subcmds/status.py @@ -87,6 +87,11 @@ the following meanings: help="include objects in working directory outside of repo " "projects", ) + p.add_option( + "--superproject-rev", + action="store_true", + help="print the superproject reivsion", + ) @classmethod def _StatusHelper(cls, quiet, local, project_idx): @@ -132,6 +137,12 @@ the following meanings: outstring.append("".join([status_header, item, "/"])) def Execute(self, opt, args): + if opt.superproject_rev: + sp = self.manifest.superproject + srev = sp.commit_id if sp else "None" + print("Superproject Revision:", srev) + return + all_projects = self.GetProjects( args, all_manifests=not opt.this_manifest_only )