diff options
| author | Gavin Mak <gavinmak@google.com> | 2025-07-25 18:21:50 +0000 |
|---|---|---|
| committer | LUCI <gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2025-07-25 14:30:07 -0700 |
| commit | 7f7d70efe4c490a4df8597e04aca7d7e198b8e9b (patch) | |
| tree | e6c9ee51a091eae145a8e39c3dd2532db30eb307 /project.py | |
| parent | 720bd1e96b4e9c36d035987578fc01a9939d753f (diff) | |
| download | git-repo-7f7d70efe4c490a4df8597e04aca7d7e198b8e9b.tar.gz | |
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>
Diffstat (limited to 'project.py')
| -rw-r--r-- | project.py | 6 |
1 files changed, 5 insertions, 1 deletions
| @@ -3835,7 +3835,11 @@ class Project: | |||
| 3835 | def GetHead(self): | 3835 | def GetHead(self): |
| 3836 | """Return the ref that HEAD points to.""" | 3836 | """Return the ref that HEAD points to.""" |
| 3837 | try: | 3837 | try: |
| 3838 | return self.rev_parse("--symbolic-full-name", HEAD) | 3838 | symbolic_head = self.rev_parse("--symbolic-full-name", HEAD) |
| 3839 | if symbolic_head == HEAD: | ||
| 3840 | # Detached HEAD. Return the commit SHA instead. | ||
| 3841 | return self.rev_parse(HEAD) | ||
| 3842 | return symbolic_head | ||
| 3839 | except GitError as e: | 3843 | except GitError as e: |
| 3840 | path = self.GetDotgitPath(subpath=HEAD) | 3844 | path = self.GetDotgitPath(subpath=HEAD) |
| 3841 | raise NoManifestException(path, str(e)) | 3845 | raise NoManifestException(path, str(e)) |
