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