[PATCH 9 of 9 hglib] client: add tags command

Idan Kamara idankk86 at gmail.com
Mon Aug 15 14:20:50 CDT 2011


# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1313435879 -10800
# Node ID ae770f88b07580b1114c5d9e25037a4d173aabd5
# Parent  08f546914d3fb780f912115e2ecff8d0f8c8cbdd
client: add tags command

diff -r 08f546914d3f -r ae770f88b075 hglib/client.py
--- a/hglib/client.py	Mon Aug 15 22:17:58 2011 +0300
+++ b/hglib/client.py	Mon Aug 15 22:17:59 2011 +0300
@@ -623,6 +623,24 @@
 
         self.rawcommand(args)
 
+    def tags(self):
+        """
+        Return a list of repository tags as: (name, rev, node, islocal)
+        """
+        args = cmdbuilder('tags', v=True)
+
+        out = self.rawcommand(args)
+
+        t = []
+        for line in out.splitlines():
+            taglocal = line.endswith(' local')
+            if taglocal:
+                line = line[:-6]
+            name, rev = line.rsplit(' ', 1)
+            rev, node = rev.split(':')
+            t.append((name.rstrip(), int(rev), node, taglocal))
+        return t
+
     def tip(self):
         args = cmdbuilder('tip', template=templates.changeset)
         out = self.rawcommand(args)
diff -r 08f546914d3f -r ae770f88b075 tests/test-tags.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-tags.py	Mon Aug 15 22:17:59 2011 +0300
@@ -0,0 +1,19 @@
+import common
+import hglib
+
+class test_tags(common.basetest):
+    def test_basic(self):
+        self.append('a', 'a')
+        rev, node = self.client.commit('first', addremove=True)
+        self.client.tag('my tag')
+        self.client.tag('local tag', rev=rev, local=True)
+
+        # filecache that was introduced in 2.0 makes us see the local tag, for
+        # now we have to reconnect
+        if self.client.version < (2, 0, 0):
+            self.client = hglib.open()
+
+        tags = self.client.tags()
+        self.assertEquals(tags, [('tip', 1, '385116ffbd0a', False),
+                                 ('my tag', 0, '956881b65ce7', False),
+                                 ('local tag', 0, '956881b65ce7', True)])


More information about the Mercurial-devel mailing list