From c8290ad49e441424b59b88dce3af9919247ca364 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 1 Oct 2019 01:07:11 -0400 Subject: [PATCH] project: allow CurrentBranch to return None on errors If the repo client checkout is in an incomplete sync state, the work git repo might be in a bad way. Turn errors parsing HEAD into None since callers of CurrentBranch already need to account for it. Change-Id: Ia7682e29ef4182006b1fb5f5e57800f8ab67a9f4 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/239239 Reviewed-by: David Pursehouse Tested-by: Mike Frysinger --- project.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/project.py b/project.py index b41a57cf..51160a94 100755 --- a/project.py +++ b/project.py @@ -866,10 +866,17 @@ class Project(object): @property def CurrentBranch(self): """Obtain the name of the currently checked out branch. - The branch name omits the 'refs/heads/' prefix. - None is returned if the project is on a detached HEAD. + + The branch name omits the 'refs/heads/' prefix. + None is returned if the project is on a detached HEAD, or if the work_git is + otheriwse inaccessible (e.g. an incomplete sync). """ - b = self.work_git.GetHead() + try: + b = self.work_git.GetHead() + except NoManifestException: + # If the local checkout is in a bad state, don't barf. Let the callers + # process this like the head is unreadable. + return None if b.startswith(R_HEADS): return b[len(R_HEADS):] return None