3 import StringIO as _StringIO
5 import bzrlib as _bzrlib
6 import bzrlib.builtins as _bzrlib_builtins
7 import bzrlib.log as _bzrlib_log
9 from . import VCSBackend as _VCSBackend
12 class _LogFormatter (_bzrlib_log.LogFormatter):
13 supports_merge_revisions = True
19 def log_revision(self, revision):
20 raise NotImplementedError
23 class _YearLogFormatter (_LogFormatter):
24 def log_revision(self, revision):
26 time.strftime('%Y', time.gmtime(revision.rev.timestamp))
30 class _AuthorLogFormatter (_LogFormatter):
31 def log_revision(self, revision):
32 authors = revision.rev.get_apparent_authors()
33 self.to_file.write('\n'.join(authors)+'\n')
36 class BazaarBackend (_VCSBackend):
39 def __init__(self, **kwargs):
40 super(BazaarBackend, self).__init__(**kwargs)
41 self._version = _bzrlib.__version__
43 def _years(self, filename=None):
44 cmd = _bzrlib_builtins.cmd_log()
45 cmd.outf = _StringIO.StringIO()
46 kwargs = {'log_format':_YearLogFormatter, 'levels':0}
47 if filename is not None:
48 kwargs['file_list'] = [filename]
50 years = set(int(year) for year in cmd.outf.getvalue().splitlines())
53 def _authors(self, filename=None):
54 cmd = _bzrlib_builtins.cmd_log()
55 cmd.outf = _StringIO.StringIO()
56 kwargs = {'log_format':_AuthorLogFormatter, 'levels':0}
57 if filename is not None:
58 kwargs['file_list'] = [filename]
60 authors = set(cmd.outf.getvalue().splitlines())
63 def is_versioned(self, filename):
64 cmd = _bzrlib_builtins.cmd_log()
65 cmd.outf = StringIO.StringIO()
66 cmd.run(file_list=[filename])