1 # -*- coding: utf-8 -*-
2 # vim:fileencoding=utf-8 ai ts=4 sts=4 et sw=4
3 # Copyright 2012 Neil Muller
4 # GPL 2+ - see COPYING for details
8 revision as _mod_revision,
10 from bzrlib.config import (
18 class IrkerSender(object):
19 """An irker message sender."""
21 def __init__(self, branch, revision_id, config, local_branch=None,
25 self.repository = branch.repository
26 if (local_branch is not None and
27 local_branch.repository.has_revision(revision_id)):
28 self.repository = local_branch.repository
29 self._revision_id = revision_id
34 def _setup_revision_and_revno(self):
35 self.revision = self.repository.get_revision(self._revision_id)
36 self.revno = self.branch.revision_id_to_revno(self._revision_id)
40 'committer': self.revision.committer,
41 'message': self.revision.get_summary(),
42 'revision': '%d' % self.revno,
46 #for name, value in fields.items():
47 # text = text.replace('$%s' % name, value)
51 from bzrlib import log
53 rev1 = rev2 = self.revno
58 # use 'replace' so that we don't abort if trying to write out
59 # in e.g. the default C locale.
61 # Following bzr-email, we use StringIO.StringIO to minimise possible
63 from StringIO import StringIO
66 lf = log.log_formatter('line',
71 if len(self.revision.parent_ids) <= 1:
72 # This is not a merge, so we can special case the display of one
73 # revision, and not have to encur the show_log overhead.
74 lr = log.LogRevision(self.revision, self.revno, 0, None)
77 # let the show_log code figure out what revisions need to be
78 # displayed, as this is a merge
79 log.show_log(self.branch,
86 return outf.getvalue()
89 """What URL to display in the subject of the mail"""
90 url = self.config.get('irker_url')
92 url = self.config.get('public_branch')
94 url = self.branch.base
98 """Send the info to irkerd.
100 self.branch.lock_read()
101 self.repository.lock_read()
103 # Do this after we have locked, to make things faster.
104 self._setup_revision_and_revno()
106 self.repository.unlock()
109 opt_irker_url = Option('irker_url',
110 help='URL to mention for branch in messages.')
111 opt_irker_channels = Option('irker_channels',
112 help='Channel(s) to post commit messages to.')
113 opt_irker_colours = Option('irker_colours',
114 help='Colour option for irker.')