mercurial/revset.py
changeset 38489 626d29c6e987
parent 38488 b23ef2f06d98
child 38490 5d88fd1bc2af
equal deleted inserted replaced
38488:b23ef2f06d98 38489:626d29c6e987
   201     b = _orsetlist(repo, subset, xs[p:], order)
   201     b = _orsetlist(repo, subset, xs[p:], order)
   202     return a + b
   202     return a + b
   203 
   203 
   204 def orset(repo, subset, x, order):
   204 def orset(repo, subset, x, order):
   205     xs = getlist(x)
   205     xs = getlist(x)
       
   206     if not xs:
       
   207         return baseset()
   206     if order == followorder:
   208     if order == followorder:
   207         # slow path to take the subset order
   209         # slow path to take the subset order
   208         return subset & _orsetlist(repo, fullreposet(repo), xs, anyorder)
   210         return subset & _orsetlist(repo, fullreposet(repo), xs, anyorder)
   209     else:
   211     else:
   210         return _orsetlist(repo, subset, xs, order)
   212         return _orsetlist(repo, subset, xs, order)
   307 
   309 
   308     Accepts 0 or more changesets.
   310     Accepts 0 or more changesets.
   309     Will return empty list when passed no args.
   311     Will return empty list when passed no args.
   310     Greatest common ancestor of a single changeset is that changeset.
   312     Greatest common ancestor of a single changeset is that changeset.
   311     """
   313     """
   312     l = getlist(x)
       
   313     rl = fullreposet(repo)
       
   314     anc = None
   314     anc = None
   315 
   315     for r in orset(repo, fullreposet(repo), x, order=anyorder):
   316     # (getset(repo, rl, i) for i in l) generates a list of lists
   316         if anc is None:
   317     for revs in (getset(repo, rl, i) for i in l):
   317             anc = repo[r]
   318         for r in revs:
   318         else:
   319             if anc is None:
   319             anc = anc.ancestor(repo[r])
   320                 anc = repo[r]
       
   321             else:
       
   322                 anc = anc.ancestor(repo[r])
       
   323 
   320 
   324     if anc is not None and anc.rev() in subset:
   321     if anc is not None and anc.rev() in subset:
   325         return baseset([anc.rev()])
   322         return baseset([anc.rev()])
   326     return baseset()
   323     return baseset()
   327 
   324