# HG changeset patch # User Juan Pablo Aroztegi <juanpablo.aroztegi@openbravo.com> # Date 1285695365 -7200 # Tue Sep 28 19:36:05 2010 +0200 # Node ID 19dabc8a3236dbe5725246aead6b937858576dc9 # Parent 0ae639c75b8c0aed2fd49444fe7d9db069f4f838 transplant: add the transplanted revset predicate This adds support to identify a particular transplanted changeset or set of changesets. The argument is optional. Examples: hg log -r 'transplanted(1234 or 2345)' hg log -r 'transplanted()' diff --git a/hgext/transplant.py b/hgext/transplant.py --- a/hgext/transplant.py +++ b/hgext/transplant.py @@ -17,6 +17,7 @@ import os, tempfile from mercurial import bundlerepo, changegroup, cmdutil, hg, merge, match from mercurial import patch, revlog, util, error, discovery +from mercurial import revset, help class transplantentry(object): def __init__(self, lnode, rnode): @@ -603,6 +604,30 @@ source.close() os.unlink(bundle) +def revsettransplanted(repo, subset, x): + if x: + s = revset.getset(repo, subset, x) + else: + s = subset + cs = set() + for r in xrange(0, len(repo)): + if repo[r].extra().get('transplant_source'): + cs.add(r) + return [r for r in s if r in cs] + +def revsetdoc(): + doc = help.loaddoc('revsets')() + doc += _('\nAdded by the transplant extension:\n\n' + '``transplanted(set)``\n' + ' Transplanted changesets in set.\n') + return doc + +def uisetup(ui): + 'Add the transplanted revset predicate' + for i in (i for i, x in enumerate(help.helptable) if x[0] == ['revsets']): + help.helptable[i] = (['revsets'], _("Specifying Revision Sets"), revsetdoc) + revset.symbols['transplanted'] = revsettransplanted + cmdtable = { "transplant": (transplant,