diff --git a/project.py b/project.py index 67c00bdbb..577847f8c 100644 --- a/project.py +++ b/project.py @@ -3964,30 +3964,14 @@ class Project: def GetHead(self): """Return the ref that HEAD points to.""" try: - 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: - # `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 + return self.symbolic_ref("-q", HEAD, log_as_error=False) + except GitError: + pass + try: + # If symbolic-ref fails, try to treat as detached HEAD. + return self.rev_parse(HEAD) + except GitError as e: logger.warning( "project %s: unparseable HEAD; trying to recover.\n" "Check that HEAD ref in .git/HEAD is valid. The error "