Mercurial > public > mercurial-scm > hg
comparison mercurial/scmutil.py @ 37252:e9ee540af434
scmutil: make revpair() return context objects (API)
Differential Revision: https://phab.mercurial-scm.org/D3006
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Sat, 31 Mar 2018 23:10:46 -0700 |
parents | 7c0f40f4f7bf |
children | d29f6fbd1181 |
comparison
equal
deleted
inserted
replaced
37251:7c0f40f4f7bf | 37252:e9ee540af434 |
---|---|
445 def _pairspec(revspec): | 445 def _pairspec(revspec): |
446 tree = revsetlang.parse(revspec) | 446 tree = revsetlang.parse(revspec) |
447 return tree and tree[0] in ('range', 'rangepre', 'rangepost', 'rangeall') | 447 return tree and tree[0] in ('range', 'rangepre', 'rangepost', 'rangeall') |
448 | 448 |
449 def revpairnodes(repo, revs): | 449 def revpairnodes(repo, revs): |
450 return revpair(repo, revs) | 450 ctx1, ctx2 = revpair(repo, revs) |
451 return ctx1.node(), ctx2.node() | |
451 | 452 |
452 def revpair(repo, revs): | 453 def revpair(repo, revs): |
453 if not revs: | 454 if not revs: |
454 return repo.dirstate.p1(), None | 455 return repo['.'], repo[None] |
455 | 456 |
456 l = revrange(repo, revs) | 457 l = revrange(repo, revs) |
457 | 458 |
458 if not l: | 459 if not l: |
459 first = second = None | 460 first = second = None |
473 and not all(revrange(repo, [r]) for r in revs)): | 474 and not all(revrange(repo, [r]) for r in revs)): |
474 raise error.Abort(_('empty revision on one side of range')) | 475 raise error.Abort(_('empty revision on one side of range')) |
475 | 476 |
476 # if top-level is range expression, the result must always be a pair | 477 # if top-level is range expression, the result must always be a pair |
477 if first == second and len(revs) == 1 and not _pairspec(revs[0]): | 478 if first == second and len(revs) == 1 and not _pairspec(revs[0]): |
478 return repo.lookup(first), None | 479 return repo[first], repo[None] |
479 | 480 |
480 return repo.lookup(first), repo.lookup(second) | 481 return repo[first], repo[second] |
481 | 482 |
482 def revrange(repo, specs, localalias=None): | 483 def revrange(repo, specs, localalias=None): |
483 """Execute 1 to many revsets and return the union. | 484 """Execute 1 to many revsets and return the union. |
484 | 485 |
485 This is the preferred mechanism for executing revsets using user-specified | 486 This is the preferred mechanism for executing revsets using user-specified |