Mercurial > hg
view hgext/parentrevspec.py @ 7618:6c89dd0a7797
Bugzilla 2.18 and on use contrib/sendbugmail.pl, not processmail.
During 2.17, Bugzilla ditched the old 'processmail' script. With 2.18
contrib/sendbugmail.pl arrived in its place.
For notification emails to work properly, sendbugmail.pl requires as
its second parameter the Bugzilla user who made the commit. Otherwise
the user will not be recognised as the committer, and will receive
notification emails about the commit regardless of their preference
about being notified on their own commits. This parameter should be given
to processmail also, but wasn't for historical reasons.
Add new config with the local Bugzilla install directory, and provide
defaults for the notify string which should work for most setups.
Still permit notify string to be specified, and for backwards
compatibility with any extant notify strings try first interpolating
notify string with old-style single bug ID argument. Add new 2.18
support version to introduce sendbugmail.pl.
In other words, this update should be backwards-compatible with existing
installations, but offers simplified setup in most cases. And as a bonus
Bugzilla notification emails will be dispatched correctly; notifiers will
not receive an email unless configured to do so.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Fri, 09 Jan 2009 22:15:08 +0000 |
parents | b111e9a907b1 |
children | 1d54e2f6c0b7 |
line wrap: on
line source
# Mercurial extension to make it easy to refer to the parent of a revision # # Copyright (C) 2007 Alexis S. L. Carvalho <alexis@cecm.usp.br> # # This software may be used and distributed according to the terms # of the GNU General Public License, incorporated herein by reference. '''\ use suffixes to refer to ancestor revisions This extension allows you to use git-style suffixes to refer to the ancestors of a specific revision. For example, if you can refer to a revision as "foo", then: - foo^N = Nth parent of foo: foo^0 = foo foo^1 = first parent of foo foo^2 = second parent of foo foo^ = foo^1 - foo~N = Nth first grandparent of foo foo~0 = foo foo~1 = foo^1 = foo^ = first parent of foo foo~2 = foo^1^1 = foo^^ = first parent of first parent of foo ''' import mercurial.repo def reposetup(ui, repo): if not repo.local(): return class parentrevspecrepo(repo.__class__): def lookup(self, key): try: _super = super(parentrevspecrepo, self) return _super.lookup(key) except mercurial.repo.RepoError: pass circ = key.find('^') tilde = key.find('~') if circ < 0 and tilde < 0: raise elif circ >= 0 and tilde >= 0: end = min(circ, tilde) else: end = max(circ, tilde) cl = self.changelog base = key[:end] try: node = _super.lookup(base) except mercurial.repo.RepoError: # eek - reraise the first error return _super.lookup(key) rev = cl.rev(node) suffix = key[end:] i = 0 while i < len(suffix): # foo^N => Nth parent of foo # foo^0 == foo # foo^1 == foo^ == 1st parent of foo # foo^2 == 2nd parent of foo if suffix[i] == '^': j = i + 1 p = cl.parentrevs(rev) if j < len(suffix) and suffix[j].isdigit(): j += 1 n = int(suffix[i+1:j]) if n > 2 or n == 2 and p[1] == -1: raise else: n = 1 if n: rev = p[n - 1] i = j # foo~N => Nth first grandparent of foo # foo~0 = foo # foo~1 = foo^1 == foo^ == 1st parent of foo # foo~2 = foo^1^1 == foo^^ == 1st parent of 1st parent of foo elif suffix[i] == '~': j = i + 1 while j < len(suffix) and suffix[j].isdigit(): j += 1 if j == i + 1: raise n = int(suffix[i+1:j]) for k in xrange(n): rev = cl.parentrevs(rev)[0] i = j else: raise return cl.node(rev) repo.__class__ = parentrevspecrepo