GitRepository: speed up get_branch() and make it more robust
authorGuido Günther <agx@sigxcpu.org>
Wed, 26 Oct 2011 17:47:23 +0000 (19:47 +0200)
committerGuido Günther <agx@sigxcpu.org>
Thu, 27 Oct 2011 17:20:17 +0000 (19:20 +0200)
by using 'git symbolic-ref'

gbp/git.py

index 30417f5..d8ba6e8 100644 (file)
@@ -361,9 +361,12 @@ class GitRepository(object):
         @return: current branch
         @rtype: string
         """
-        for line in self.__git_getoutput('branch', [ '--no-color' ])[0]:
-            if line.startswith('*'):
-                return line.split(' ', 1)[1].strip()
+        out, dummy = self.__git_getoutput('symbolic-ref', [ 'HEAD' ])
+        ref = out[0][:-1]
+        # Check if ref really exists
+        failed = self.__git_getoutput('show-ref', [ ref ])[1]
+        if not failed:
+            return ref[11:] # strip /refs/heads
 
     def get_merge_branch(self, branch):
         """