# HG changeset patch # User Idan Kamara # Date 1313437605 -10800 # Node ID 77ebb51f5f36341dd4db786c8f0be40d4be14ee0 # Parent b6b75c71ac58b139bfb8eada8808e045f4b4c622 client: add tags command diff -r b6b75c71ac58 -r 77ebb51f5f36 hglib/client.py --- a/hglib/client.py Mon Aug 15 22:46:45 2011 +0300 +++ b/hglib/client.py Mon Aug 15 22:46:45 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 b6b75c71ac58 -r 77ebb51f5f36 tests/test-tags.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-tags.py Mon Aug 15 22:46:45 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, self.client.tip().node[:12], False), + ('my tag', 0, node[:12], False), + ('local tag', 0, node[:12], True)])