Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 21217:2195ac506c6a stable 3.0
revset: directly use __contains__ instead of a lambda
We get rid of lambda in a bunch of other place. This is equivalent and much
faster. (no new timing as this is the same change as three other changesets)
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 01 May 2014 14:07:04 -0700 |
parents | 717ba2c3c9da |
children | b7f49b765241 |
comparison
equal
deleted
inserted
replaced
21216:6d632cf8a811 | 21217:2195ac506c6a |
---|---|
281 | 281 |
282 def dagrange(repo, subset, x, y): | 282 def dagrange(repo, subset, x, y): |
283 r = spanset(repo) | 283 r = spanset(repo) |
284 xs = _revsbetween(repo, getset(repo, r, x), getset(repo, r, y)) | 284 xs = _revsbetween(repo, getset(repo, r, x), getset(repo, r, y)) |
285 s = subset.set() | 285 s = subset.set() |
286 return xs.filter(lambda r: r in s) | 286 return xs.filter(s.__contains__) |
287 | 287 |
288 def andset(repo, subset, x, y): | 288 def andset(repo, subset, x, y): |
289 return getset(repo, getset(repo, subset, x), y) | 289 return getset(repo, getset(repo, subset, x), y) |
290 | 290 |
291 def orset(repo, subset, x, y): | 291 def orset(repo, subset, x, y): |
346 def _ancestors(repo, subset, x, followfirst=False): | 346 def _ancestors(repo, subset, x, followfirst=False): |
347 args = getset(repo, spanset(repo), x) | 347 args = getset(repo, spanset(repo), x) |
348 if not args: | 348 if not args: |
349 return baseset([]) | 349 return baseset([]) |
350 s = _revancestors(repo, args, followfirst) | 350 s = _revancestors(repo, args, followfirst) |
351 return subset.filter(lambda r: r in s) | 351 return subset.filter(s.__contains__) |
352 | 352 |
353 def ancestors(repo, subset, x): | 353 def ancestors(repo, subset, x): |
354 """``ancestors(set)`` | 354 """``ancestors(set)`` |
355 Changesets that are ancestors of a changeset in set. | 355 Changesets that are ancestors of a changeset in set. |
356 """ | 356 """ |
374 cl = repo.changelog | 374 cl = repo.changelog |
375 for r in getset(repo, baseset(cl), x): | 375 for r in getset(repo, baseset(cl), x): |
376 for i in range(n): | 376 for i in range(n): |
377 r = cl.parentrevs(r)[0] | 377 r = cl.parentrevs(r)[0] |
378 ps.add(r) | 378 ps.add(r) |
379 return subset.filter(lambda r: r in ps) | 379 return subset.filter(ps.__contains__) |
380 | 380 |
381 def author(repo, subset, x): | 381 def author(repo, subset, x): |
382 """``author(string)`` | 382 """``author(string)`` |
383 Alias for ``user(string)``. | 383 Alias for ``user(string)``. |
384 """ | 384 """ |
404 if not rev in descendants and not rev in include] | 404 if not rev in descendants and not rev in include] |
405 else: | 405 else: |
406 exclude = getset(repo, spanset(repo), args[1]) | 406 exclude = getset(repo, spanset(repo), args[1]) |
407 | 407 |
408 results = set(ancestormod.missingancestors(include, exclude, cl.parentrevs)) | 408 results = set(ancestormod.missingancestors(include, exclude, cl.parentrevs)) |
409 return lazyset(subset, lambda x: x in results) | 409 return lazyset(subset, results.__contains__) |
410 | 410 |
411 def bisect(repo, subset, x): | 411 def bisect(repo, subset, x): |
412 """``bisect(string)`` | 412 """``bisect(string)`` |
413 Changesets marked in the specified bisect status: | 413 Changesets marked in the specified bisect status: |
414 | 414 |
421 - ``current`` : the cset currently being bisected | 421 - ``current`` : the cset currently being bisected |
422 """ | 422 """ |
423 # i18n: "bisect" is a keyword | 423 # i18n: "bisect" is a keyword |
424 status = getstring(x, _("bisect requires a string")).lower() | 424 status = getstring(x, _("bisect requires a string")).lower() |
425 state = set(hbisect.get(repo, status)) | 425 state = set(hbisect.get(repo, status)) |
426 return subset.filter(lambda r: r in state) | 426 return subset.filter(state.__contains__) |
427 | 427 |
428 # Backward-compatibility | 428 # Backward-compatibility |
429 # - no help entry so that we do not advertise it any more | 429 # - no help entry so that we do not advertise it any more |
430 def bisected(repo, subset, x): | 430 def bisected(repo, subset, x): |
431 return bisect(repo, subset, x) | 431 return bisect(repo, subset, x) |
464 bmrevs.add(repo[bmrev].rev()) | 464 bmrevs.add(repo[bmrev].rev()) |
465 return subset & bmrevs | 465 return subset & bmrevs |
466 | 466 |
467 bms = set([repo[r].rev() | 467 bms = set([repo[r].rev() |
468 for r in repo._bookmarks.values()]) | 468 for r in repo._bookmarks.values()]) |
469 return subset.filter(lambda r: r in bms) | 469 return subset.filter(bms.__contains__) |
470 | 470 |
471 def branch(repo, subset, x): | 471 def branch(repo, subset, x): |
472 """``branch(string or set)`` | 472 """``branch(string or set)`` |
473 All changesets belonging to the given branch or the branches of the given | 473 All changesets belonging to the given branch or the branches of the given |
474 changesets. | 474 changesets. |
723 break | 723 break |
724 | 724 |
725 r = src | 725 r = src |
726 src = _getrevsource(repo, r) | 726 src = _getrevsource(repo, r) |
727 | 727 |
728 return subset.filter(lambda r: r in dests) | 728 return subset.filter(dests.__contains__) |
729 | 729 |
730 def divergent(repo, subset, x): | 730 def divergent(repo, subset, x): |
731 """``divergent()`` | 731 """``divergent()`` |
732 Final successors of changesets with an alternative set of final successors. | 732 Final successors of changesets with an alternative set of final successors. |
733 """ | 733 """ |
734 # i18n: "divergent" is a keyword | 734 # i18n: "divergent" is a keyword |
735 getargs(x, 0, 0, _("divergent takes no arguments")) | 735 getargs(x, 0, 0, _("divergent takes no arguments")) |
736 divergent = obsmod.getrevs(repo, 'divergent') | 736 divergent = obsmod.getrevs(repo, 'divergent') |
737 return subset.filter(lambda r: r in divergent) | 737 return subset.filter(divergent.__contains__) |
738 | 738 |
739 def draft(repo, subset, x): | 739 def draft(repo, subset, x): |
740 """``draft()`` | 740 """``draft()`` |
741 Changeset in draft phase.""" | 741 Changeset in draft phase.""" |
742 # i18n: "draft" is a keyword | 742 # i18n: "draft" is a keyword |
809 if m(f): | 809 if m(f): |
810 fl = repo.file(f) | 810 fl = repo.file(f) |
811 for fr in fl: | 811 for fr in fl: |
812 s.add(fl.linkrev(fr)) | 812 s.add(fl.linkrev(fr)) |
813 | 813 |
814 return subset.filter(lambda r: r in s) | 814 return subset.filter(s.__contains__) |
815 | 815 |
816 def first(repo, subset, x): | 816 def first(repo, subset, x): |
817 """``first(set, [n])`` | 817 """``first(set, [n])`` |
818 An alias for limit(). | 818 An alias for limit(). |
819 """ | 819 """ |
832 else: | 832 else: |
833 return baseset([]) | 833 return baseset([]) |
834 else: | 834 else: |
835 s = _revancestors(repo, baseset([c.rev()]), followfirst) | 835 s = _revancestors(repo, baseset([c.rev()]), followfirst) |
836 | 836 |
837 return subset.filter(lambda r: r in s) | 837 return subset.filter(s.__contains__) |
838 | 838 |
839 def follow(repo, subset, x): | 839 def follow(repo, subset, x): |
840 """``follow([file])`` | 840 """``follow([file])`` |
841 An alias for ``::.`` (ancestors of the working copy's first parent). | 841 An alias for ``::.`` (ancestors of the working copy's first parent). |
842 If a filename is specified, the history of the given file is followed, | 842 If a filename is specified, the history of the given file is followed, |
1174 if prev is None: | 1174 if prev is None: |
1175 return src | 1175 return src |
1176 src = prev | 1176 src = prev |
1177 | 1177 |
1178 o = set([_firstsrc(r) for r in args]) | 1178 o = set([_firstsrc(r) for r in args]) |
1179 return subset.filter(lambda r: r in o) | 1179 return subset.filter(o.__contains__) |
1180 | 1180 |
1181 def outgoing(repo, subset, x): | 1181 def outgoing(repo, subset, x): |
1182 """``outgoing([path])`` | 1182 """``outgoing([path])`` |
1183 Changesets not found in the specified destination repository, or the | 1183 Changesets not found in the specified destination repository, or the |
1184 default push location. | 1184 default push location. |
1197 repo.ui.pushbuffer() | 1197 repo.ui.pushbuffer() |
1198 outgoing = discovery.findcommonoutgoing(repo, other, onlyheads=revs) | 1198 outgoing = discovery.findcommonoutgoing(repo, other, onlyheads=revs) |
1199 repo.ui.popbuffer() | 1199 repo.ui.popbuffer() |
1200 cl = repo.changelog | 1200 cl = repo.changelog |
1201 o = set([cl.rev(r) for r in outgoing.missing]) | 1201 o = set([cl.rev(r) for r in outgoing.missing]) |
1202 return subset.filter(lambda r: r in o) | 1202 return subset.filter(o.__contains__) |
1203 | 1203 |
1204 def p1(repo, subset, x): | 1204 def p1(repo, subset, x): |
1205 """``p1([set])`` | 1205 """``p1([set])`` |
1206 First parent of changesets in set, or the working directory. | 1206 First parent of changesets in set, or the working directory. |
1207 """ | 1207 """ |