Mercurial > python-hglib
changeset 52:18f72b255553
client: add annotate command
author | Idan Kamara <idankk86@gmail.com> |
---|---|
date | Fri, 19 Aug 2011 19:46:11 +0300 |
parents | c52383a550fb |
children | 066dfa5c0b70 |
files | hglib/client.py tests/test-annotate.py |
diffstat | 2 files changed, 47 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/hglib/client.py Thu Aug 18 16:23:43 2011 +0300 +++ b/hglib/client.py Fri Aug 19 19:46:11 2011 +0300 @@ -173,6 +173,26 @@ return bool(eh) + def annotate(self, files, rev=None, nofollow=False, text=False, user=False, + file=False, date=False, number=False, changeset=False, + line=False, verbose=False, include=None, exclude=None): + """ + Show changeset information by line for each file in files. + + yields a (info, contents) tuple for each line in a file + """ + if not isinstance(files, list): + files = [files] + + args = cmdbuilder('annotate', *files, r=rev, no_follow=nofollow, a=text, + u=user, f=file, d=date, n=number, c=changeset, l=line, + v=verbose, I=include, X=exclude) + + out = self.rawcommand(args) + + for line in out.splitlines(): + yield tuple(line.split(': ', 1)) + def backout(self, rev, merge=False, parent=None, tool=None, message=None, logfile=None, date=None, user=None): if message and logfile:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-annotate.py Fri Aug 19 19:46:11 2011 +0300 @@ -0,0 +1,27 @@ +import common + +class test_annotate(common.basetest): + def test_basic(self): + self.append('a', 'a\n') + rev, node0 = self.client.commit('first', addremove=True) + self.append('a', 'a\n') + rev, node1 = self.client.commit('second') + + self.assertEquals(list(self.client.annotate('a')), [('0', 'a'), ('1', 'a')]) + self.assertEquals(list(self.client.annotate('a', user=True, file=True, + number=True, changeset=True, line=True, verbose=True)), + [('test 0 %s a:1' % node0[:12], 'a'), + ('test 1 %s a:2' % node1[:12], 'a')]) + + def test_files(self): + self.append('a', 'a\n') + rev, node0 = self.client.commit('first', addremove=True) + self.append('b', 'b\n') + rev, node1 = self.client.commit('second', addremove=True) + self.assertEquals(list(self.client.annotate(['a', 'b'])), + [('0', 'a'), ('1', 'b')]) + + def test_two_colons(self): + self.append('a', 'a: b\n') + self.client.commit('first', addremove=True) + self.assertEquals(list(self.client.annotate('a')), [('0', 'a: b')])