From 7f7d70efe4c490a4df8597e04aca7d7e198b8e9b Mon Sep 17 00:00:00 2001 From: Gavin Mak Date: Fri, 25 Jul 2025 18:21:50 +0000 Subject: 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 Commit-Queue: Gavin Mak Tested-by: Gavin Mak --- project.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'project.py') diff --git a/project.py b/project.py index 84a5cdf6..4c699d4b 100644 --- a/project.py +++ b/project.py @@ -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)) -- cgit v1.2.3-54-g00ecf