[PATCH 7 of 9 hglib] branches: handle inactive branches

Idan Kamara idankk86 at gmail.com
Thu Jul 28 14:59:00 CDT 2011


# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1311450939 -10800
# Node ID f45939ae5fea37d265da36376d31fbf983de8f8e
# Parent  bc84a8ded1610a0497e0f32499d014e2d1f1c117
branches: handle inactive branches

diff -r bc84a8ded161 -r f45939ae5fea hglib/hglib.py
--- a/hglib/hglib.py	Sat Jul 23 22:55:39 2011 +0300
+++ b/hglib/hglib.py	Sat Jul 23 22:55:39 2011 +0300
@@ -283,13 +283,26 @@
             return self.outputruncommand(['branch'])[1].rstrip()
 
     def branches(self):
-        out = self.outputruncommand(['branches'])[1]
-        branches = {}
-        for line in out.rstrip().split('\n'):
-            branch, revnode = line.split()
-            branches[branch] = self.log(revrange=[revnode.split(':')[0]])[0]
+        args = util.commandlinebuilder('branches')
 
-        return branches
+        out = self.outputruncommand(args)[1]
+        branches, inactive = {}, {}
+
+        # no branches case
+        if out:
+            # A 0:abcd\n
+            # B 1:efgh (inactive)\n
+            for line in out.rstrip().split('\n'):
+                branch, node = line.split(' ', 1)
+                node = node.rsplit(':')[1]
+
+                if 'inactive' in node:
+                    node = node.split(' ', 1)[0]
+                    inactive[branch] = self.log(revset=node)[0]
+                else:
+                    branches[branch] = self.log(revset=node)[0]
+
+        return branches, inactive
 
     def paths(self, name=None):
         if not name:
diff -r bc84a8ded161 -r f45939ae5fea tests/test-branch.py
--- a/tests/test-branch.py	Sat Jul 23 22:55:39 2011 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-import common
-from hglib import hglib
-
-class test_branch(common.basetest):
-    def test_basic(self):
-        self.assertEquals(self.client.branch(), 'default')
-        self.append('a', 'a')
-        rev = self.client.commit('first', addremove=True)
-        branches = self.client.branches()
-
-        self.assertEquals(rev, branches[rev.branch])
diff -r bc84a8ded161 -r f45939ae5fea tests/test-branches.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-branches.py	Sat Jul 23 22:55:39 2011 +0300
@@ -0,0 +1,23 @@
+import common
+from hglib import hglib
+
+class test_branches(common.basetest):
+    def test_empty(self):
+        self.assertEquals(self.client.branches(), ({}, {}))
+
+    def test_basic(self):
+        self.append('a', 'a')
+        rev = self.client.commit('first', addremove=True)
+        branches, inactive = self.client.branches()
+
+        self.assertEquals(rev, branches[rev.branch])
+
+    def test_inactive(self):
+        self.append('a', 'a')
+        rev0 = self.client.commit('first', addremove=True)
+        self.client.branch('foo')
+        self.append('a', 'a')
+        rev1 = self.client.commit('second')
+        branches, inactive = self.client.branches()
+        self.assertEquals(inactive['default'], rev0)
+        self.assertEquals(branches['foo'], rev1)


More information about the Mercurial-devel mailing list