[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