[kteam-tools][PATCH] ktl: Git.current_branch() optimization

Kamal Mostafa kamal at canonical.com
Fri May 24 22:06:48 UTC 2013


Query 'git symbolic-ref HEAD' instead of iterating the 'git branch' list.

Also changed behavior if current_branch() is called in a detached HEAD state:
  before: returned the string "(no branch)"
  now: throws an exception ktl.git.GetError GitError("no current branch")

No existing caller depends on the old "(no branch)" behavior.

Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
 ktl/git.py | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/ktl/git.py b/ktl/git.py
index 9483ad4..7b18275 100644
--- a/ktl/git.py
+++ b/ktl/git.py
@@ -94,17 +94,10 @@ class Git:
     #
     @classmethod
     def current_branch(cls):
-        retval = ""
-        status, result = run_command("git branch", cls.debug)
-        if status == 0:
-            for line in result:
-                if line != '' and line[0] == '*':
-                    retval = line[1:].strip()
-                    break
-        else:
-            raise GitError(result)
-
-        return retval
+        status, result = run_command("git symbolic-ref --short HEAD", cls.debug)
+        if status != 0:
+            raise GitError("no current branch")
+        return result[0]
 
     # show
     #
-- 
1.8.1.2





More information about the kernel-team mailing list