# HG changeset patch # User Benoit Boissinot # Date 1167099913 -3600 # Node ID f8849648b0e23a4663f83bf46f0a48df47cd2ece # Parent 7b1fce1d5e71c981ca2c643baa93fcee9310688a bugzilla: use contexts, simplify diff -r 7b1fce1d5e71 -r f8849648b0e2 hgext/bugzilla.py --- a/hgext/bugzilla.py Tue Dec 26 03:24:51 2006 +0100 +++ b/hgext/bugzilla.py Tue Dec 26 03:25:13 2006 +0100 @@ -222,7 +222,7 @@ _bug_re = None _split_re = None - def find_bug_ids(self, node, desc): + def find_bug_ids(self, ctx): '''find valid bug ids that are referred to in changeset comments and that do not already have references to this changeset.''' @@ -235,7 +235,7 @@ start = 0 ids = {} while True: - m = bugzilla._bug_re.search(desc, start) + m = bugzilla._bug_re.search(ctx.description(), start) if not m: break start = m.end() @@ -246,10 +246,10 @@ if ids: ids = self.filter_real_bug_ids(ids) if ids: - ids = self.filter_unknown_bug_ids(node, ids) + ids = self.filter_unknown_bug_ids(ctx.node(), ids) return ids - def update(self, bugid, node, changes): + def update(self, bugid, ctx): '''update bugzilla bug with reference to changeset.''' def webroot(root): @@ -276,13 +276,13 @@ tmpl = templater.parsestring(tmpl, quoted=False) t.use_template(tmpl) self.ui.pushbuffer() - t.show(changenode=node, changes=changes, + t.show(changenode=ctx.node(), changes=ctx.changeset(), bug=str(bugid), hgweb=self.ui.config('web', 'baseurl'), root=self.repo.root, webroot=webroot(self.repo.root)) data = self.ui.popbuffer() - self.add_comment(bugid, data, templater.email(changes[1])) + self.add_comment(bugid, data, templater.email(ctx.user())) def hook(ui, repo, hooktype, node=None, **kwargs): '''add comment to bugzilla for each changeset that refers to a @@ -300,12 +300,11 @@ hooktype) try: bz = bugzilla(ui, repo) - bin_node = bin(node) - changes = repo.changelog.read(bin_node) - ids = bz.find_bug_ids(bin_node, changes[4]) + ctx = repo.changctx(node) + ids = bz.find_bug_ids(ctx) if ids: for id in ids: - bz.update(id, bin_node, changes) + bz.update(id, ctx) bz.notify(ids) except MySQLdb.MySQLError, err: raise util.Abort(_('database error: %s') % err[1])