mercurial/revset.py
changeset 20461 abd8e56a1038
parent 20460 3a88d0d0c6b6
child 20479 c38e5556d87b
equal deleted inserted replaced
20460:3a88d0d0c6b6 20461:abd8e56a1038
   533     relative to the current directory and match against a file exactly
   533     relative to the current directory and match against a file exactly
   534     for efficiency.
   534     for efficiency.
   535     """
   535     """
   536     # i18n: "contains" is a keyword
   536     # i18n: "contains" is a keyword
   537     pat = getstring(x, _("contains requires a pattern"))
   537     pat = getstring(x, _("contains requires a pattern"))
   538     s = []
   538 
   539     if not matchmod.patkind(pat):
   539     def matches(x):
   540         pat = pathutil.canonpath(repo.root, repo.getcwd(), pat)
   540         if not matchmod.patkind(pat):
   541         for r in subset:
   541             pats = pathutil.canonpath(repo.root, repo.getcwd(), pat)
   542             if pat in repo[r]:
   542             if pats in repo[x]:
   543                 s.append(r)
   543                 return True
   544     else:
   544         else:
   545         m = None
   545             c = repo[x]
   546         for r in subset:
   546             m = matchmod.match(repo.root, repo.getcwd(), [pat], ctx=c)
   547             c = repo[r]
       
   548             if not m or matchmod.patkind(pat) == 'set':
       
   549                 m = matchmod.match(repo.root, repo.getcwd(), [pat], ctx=c)
       
   550             for f in c.manifest():
   547             for f in c.manifest():
   551                 if m(f):
   548                 if m(f):
   552                     s.append(r)
   549                     return True
   553                     break
   550         return False
   554     return baseset(s)
   551 
       
   552     return lazyset(subset, matches)
   555 
   553 
   556 def converted(repo, subset, x):
   554 def converted(repo, subset, x):
   557     """``converted([id])``
   555     """``converted([id])``
   558     Changesets converted from the given identifier in the old repository if
   556     Changesets converted from the given identifier in the old repository if
   559     present, or all converted changesets if no identifier is specified.
   557     present, or all converted changesets if no identifier is specified.