mercurial/revset.py
changeset 17953 49c85541617b
parent 17913 03e552aaae67
parent 17952 54cedee86e51
child 17980 83aa4359c49f
equal deleted inserted replaced
17950:a1f94e2f5da2 17953:49c85541617b
   582 def _descendants(repo, subset, x, followfirst=False):
   582 def _descendants(repo, subset, x, followfirst=False):
   583     args = getset(repo, list(repo), x)
   583     args = getset(repo, list(repo), x)
   584     if not args:
   584     if not args:
   585         return []
   585         return []
   586     s = set(_revdescendants(repo, args, followfirst)) | set(args)
   586     s = set(_revdescendants(repo, args, followfirst)) | set(args)
       
   587 
       
   588     if len(subset) == len(repo):
       
   589         # the passed in revisions may not exist, -1 for example
       
   590         for arg in args:
       
   591             if arg not in subset:
       
   592                 s.remove(arg)
       
   593         return list(s)
       
   594 
   587     return [r for r in subset if r in s]
   595     return [r for r in subset if r in s]
   588 
   596 
   589 def descendants(repo, subset, x):
   597 def descendants(repo, subset, x):
   590     """``descendants(set)``
   598     """``descendants(set)``
   591     Changesets which are descendants of changesets in set.
   599     Changesets which are descendants of changesets in set.
  1339 def roots(repo, subset, x):
  1347 def roots(repo, subset, x):
  1340     """``roots(set)``
  1348     """``roots(set)``
  1341     Changesets in set with no parent changeset in set.
  1349     Changesets in set with no parent changeset in set.
  1342     """
  1350     """
  1343     s = set(getset(repo, repo.changelog, x))
  1351     s = set(getset(repo, repo.changelog, x))
  1344     subset = [r for r in subset if r in s]
  1352     if len(subset) == len(repo):
       
  1353         subset = s
       
  1354     else:
       
  1355         subset = [r for r in subset if r in s]
  1345     cs = _children(repo, subset, s)
  1356     cs = _children(repo, subset, s)
  1346     return [r for r in subset if r not in cs]
  1357     return [r for r in subset if r not in cs]
  1347 
  1358 
  1348 def secret(repo, subset, x):
  1359 def secret(repo, subset, x):
  1349     """``secret()``
  1360     """``secret()``