comparison hgext/transplant.py @ 12581:19dabc8a3236

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()'
author Juan Pablo Aroztegi <juanpablo.aroztegi@openbravo.com>
date Tue, 28 Sep 2010 19:36:05 +0200
parents 7340b0fa049a
children 5dfd1c49dcc5
comparison
equal deleted inserted replaced
12580:0ae639c75b8c 12581:19dabc8a3236
15 15
16 from mercurial.i18n import _ 16 from mercurial.i18n import _
17 import os, tempfile 17 import os, tempfile
18 from mercurial import bundlerepo, changegroup, cmdutil, hg, merge, match 18 from mercurial import bundlerepo, changegroup, cmdutil, hg, merge, match
19 from mercurial import patch, revlog, util, error, discovery 19 from mercurial import patch, revlog, util, error, discovery
20 from mercurial import revset, help
20 21
21 class transplantentry(object): 22 class transplantentry(object):
22 def __init__(self, lnode, rnode): 23 def __init__(self, lnode, rnode):
23 self.lnode = lnode 24 self.lnode = lnode
24 self.rnode = rnode 25 self.rnode = rnode
601 finally: 602 finally:
602 if bundle: 603 if bundle:
603 source.close() 604 source.close()
604 os.unlink(bundle) 605 os.unlink(bundle)
605 606
607 def revsettransplanted(repo, subset, x):
608 if x:
609 s = revset.getset(repo, subset, x)
610 else:
611 s = subset
612 cs = set()
613 for r in xrange(0, len(repo)):
614 if repo[r].extra().get('transplant_source'):
615 cs.add(r)
616 return [r for r in s if r in cs]
617
618 def revsetdoc():
619 doc = help.loaddoc('revsets')()
620 doc += _('\nAdded by the transplant extension:\n\n'
621 '``transplanted(set)``\n'
622 ' Transplanted changesets in set.\n')
623 return doc
624
625 def uisetup(ui):
626 'Add the transplanted revset predicate'
627 for i in (i for i, x in enumerate(help.helptable) if x[0] == ['revsets']):
628 help.helptable[i] = (['revsets'], _("Specifying Revision Sets"), revsetdoc)
629 revset.symbols['transplanted'] = revsettransplanted
630
606 cmdtable = { 631 cmdtable = {
607 "transplant": 632 "transplant":
608 (transplant, 633 (transplant,
609 [('s', 'source', '', 634 [('s', 'source', '',
610 _('pull patches from REPO'), _('REPO')), 635 _('pull patches from REPO'), _('REPO')),