1
0
Fork 0

add --superproject-hash for repo status

If the option is given, repo status prints out the superproject hash

Change-Id: I5d1c709518d76d777a7f07c4c774569773c5a265
Bug: 416589884
This commit is contained in:
Scott Lee 2025-05-21 23:23:59 +00:00
parent 8d37f61471
commit 2519db1505
2 changed files with 36 additions and 0 deletions

View file

@ -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."""

View file

@ -87,6 +87,12 @@ the following meanings:
help="include objects in working directory outside of repo "
"projects",
)
p.add_option(
"--superproject-hash",
dest="superproject_hash",
action="store_true",
help="print the superproject hash",
)
@classmethod
def _StatusHelper(cls, quiet, local, project_idx):
@ -132,6 +138,12 @@ the following meanings:
outstring.append("".join([status_header, item, "/"]))
def Execute(self, opt, args):
if opt.superproject_hash:
sp = self.manifest.superproject
shash = sp.commit_id if sp else "None"
print("Superproject Hash:", shash)
return
all_projects = self.GetProjects(
args, all_manifests=not opt.this_manifest_only
)