Mercurial > hg
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')), |