mirror of
https://gerrit.googlesource.com/git-repo
synced 2026-05-07 11:29:27 +00:00
project: resolve unborn HEAD robustly in reftable repos
Use `git symbolic-ref` to resolve HEAD before trying to parse .git/HEAD directly which is unreliable for reftable repos. Bug: 476209856 Change-Id: I60185d945c5b43c871945c0126cfdf52194e745d Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/550762 Commit-Queue: Gavin Mak <gavinmak@google.com> Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Gavin Mak <gavinmak@google.com>
This commit is contained in:
+18
@@ -3945,6 +3945,24 @@ class Project:
|
||||
return self.rev_parse(HEAD)
|
||||
return symbolic_head
|
||||
except GitError as e:
|
||||
# `git rev-parse --symbolic-full-name HEAD` will fail for unborn
|
||||
# branches, so try symbolic-ref before falling back to raw file
|
||||
# parsing.
|
||||
try:
|
||||
p = GitCommand(
|
||||
self._project,
|
||||
["symbolic-ref", "-q", HEAD],
|
||||
bare=True,
|
||||
gitdir=self._gitdir,
|
||||
capture_stdout=True,
|
||||
capture_stderr=True,
|
||||
log_as_error=False,
|
||||
)
|
||||
if p.Wait() == 0:
|
||||
return p.stdout.rstrip("\n")
|
||||
except GitError:
|
||||
pass
|
||||
|
||||
logger.warning(
|
||||
"project %s: unparseable HEAD; trying to recover.\n"
|
||||
"Check that HEAD ref in .git/HEAD is valid. The error "
|
||||
|
||||
Reference in New Issue
Block a user