From 1a799d14b71c3f694aa62edf99310bc3e1a482d5 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Tue, 15 Dec 2015 13:40:05 -0800 Subject: [PATCH] Fix prune when bare git has detached head We don't really use HEAD much in the bare git repositories, but there have been reports of errors in git-symbolic-ref: symbolic-ref: fatal: Refusing to point HEAD outside of refs/ That happen when the bare git repo is in the detached head state. It's possible that previous operations were killed while we were pruning branches. Use DetachHead instead of SetHead if we're restoring the repo into a detached head state. Change-Id: I9062e8957bc70367d3ded399685ac026fbb421fc --- project.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/project.py b/project.py index 50580880..d54e336c 100644 --- a/project.py +++ b/project.py @@ -1583,8 +1583,6 @@ class Project(object): if kill: old = self.bare_git.GetHead() - if old is None: - old = 'refs/heads/please_never_use_this_as_a_branch_name' try: self.bare_git.DetachHead(rev) @@ -1596,7 +1594,10 @@ class Project(object): capture_stderr=True) b.Wait() finally: - self.bare_git.SetHead(old) + if ID_RE.match(old): + self.bare_git.DetachHead(old) + else: + self.bare_git.SetHead(old) left = self._allrefs for branch in kill: