mercurial/revset.py
changeset 24374 77fd1fb538cd
parent 24366 e8ea31131705
child 24419 0e41f110e69e
equal deleted inserted replaced
24373:59cc09240afb 24374:77fd1fb538cd
   526 
   526 
   527     If `string` starts with `re:`, the remainder of the name is treated as
   527     If `string` starts with `re:`, the remainder of the name is treated as
   528     a regular expression. To match a branch that actually starts with `re:`,
   528     a regular expression. To match a branch that actually starts with `re:`,
   529     use the prefix `literal:`.
   529     use the prefix `literal:`.
   530     """
   530     """
   531     import branchmap
   531     getbi = repo.revbranchcache().branchinfo
   532     urepo = repo.unfiltered()
       
   533     ucl = urepo.changelog
       
   534     getbi = branchmap.revbranchcache(urepo, readonly=True).branchinfo
       
   535 
   532 
   536     try:
   533     try:
   537         b = getstring(x, '')
   534         b = getstring(x, '')
   538     except error.ParseError:
   535     except error.ParseError:
   539         # not a string, but another revspec, e.g. tip()
   536         # not a string, but another revspec, e.g. tip()
   542         kind, pattern, matcher = _stringmatcher(b)
   539         kind, pattern, matcher = _stringmatcher(b)
   543         if kind == 'literal':
   540         if kind == 'literal':
   544             # note: falls through to the revspec case if no branch with
   541             # note: falls through to the revspec case if no branch with
   545             # this name exists
   542             # this name exists
   546             if pattern in repo.branchmap():
   543             if pattern in repo.branchmap():
   547                 return subset.filter(lambda r: matcher(getbi(ucl, r)[0]))
   544                 return subset.filter(lambda r: matcher(getbi(r)[0]))
   548         else:
   545         else:
   549             return subset.filter(lambda r: matcher(getbi(ucl, r)[0]))
   546             return subset.filter(lambda r: matcher(getbi(r)[0]))
   550 
   547 
   551     s = getset(repo, fullreposet(repo), x)
   548     s = getset(repo, fullreposet(repo), x)
   552     b = set()
   549     b = set()
   553     for r in s:
   550     for r in s:
   554         b.add(getbi(ucl, r)[0])
   551         b.add(getbi(r)[0])
   555     c = s.__contains__
   552     c = s.__contains__
   556     return subset.filter(lambda r: c(r) or getbi(ucl, r)[0] in b)
   553     return subset.filter(lambda r: c(r) or getbi(r)[0] in b)
   557 
   554 
   558 def bumped(repo, subset, x):
   555 def bumped(repo, subset, x):
   559     """``bumped()``
   556     """``bumped()``
   560     Mutable changesets marked as successors of public changesets.
   557     Mutable changesets marked as successors of public changesets.
   561 
   558