mercurial/scmutil.py
changeset 37252 e9ee540af434
parent 37251 7c0f40f4f7bf
child 37259 d29f6fbd1181
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