1
0
Fork 0

project: Fix GetHead to handle detached HEADs

The switch to git rev-parse caused GetHead() to return the literal
string 'HEAD' when in a detached state. This broke repo prune, which
expects a commit SHA.

Bug: 434077990
Change-Id: I80b7d5965749096b59e854f61e913aa74c857b99
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/494401
Reviewed-by: Scott Lee <ddoman@google.com>
Commit-Queue: Gavin Mak <gavinmak@google.com>
Tested-by: Gavin Mak <gavinmak@google.com>
This commit is contained in:
Gavin Mak 2025-07-25 18:21:50 +00:00 committed by LUCI
parent 720bd1e96b
commit 7f7d70efe4

View file

@ -3835,7 +3835,11 @@ class Project:
def GetHead(self):
"""Return the ref that HEAD points to."""
try:
return self.rev_parse("--symbolic-full-name", HEAD)
symbolic_head = self.rev_parse("--symbolic-full-name", HEAD)
if symbolic_head == HEAD:
# Detached HEAD. Return the commit SHA instead.
return self.rev_parse(HEAD)
return symbolic_head
except GitError as e:
path = self.GetDotgitPath(subpath=HEAD)
raise NoManifestException(path, str(e))