comparison mercurial/revset.py @ 20450:4f1aed2c7a7e

revset: added lazyset implementation bookmark revset
author Lucas Moscovicz <lmoscovicz@fb.com>
date Wed, 29 Jan 2014 15:23:16 -0800
parents ad2f1512eaa6
children ac7cebf45eb4
comparison
equal deleted inserted replaced
20449:ad2f1512eaa6 20450:4f1aed2c7a7e
389 if kind == 'literal': 389 if kind == 'literal':
390 bmrev = repo._bookmarks.get(bm, None) 390 bmrev = repo._bookmarks.get(bm, None)
391 if not bmrev: 391 if not bmrev:
392 raise util.Abort(_("bookmark '%s' does not exist") % bm) 392 raise util.Abort(_("bookmark '%s' does not exist") % bm)
393 bmrev = repo[bmrev].rev() 393 bmrev = repo[bmrev].rev()
394 return baseset([r for r in subset if r == bmrev]) 394 return lazyset(subset, lambda r: r == bmrev)
395 else: 395 else:
396 matchrevs = set() 396 matchrevs = set()
397 for name, bmrev in repo._bookmarks.iteritems(): 397 for name, bmrev in repo._bookmarks.iteritems():
398 if matcher(name): 398 if matcher(name):
399 matchrevs.add(bmrev) 399 matchrevs.add(bmrev)
405 bmrevs.add(repo[bmrev].rev()) 405 bmrevs.add(repo[bmrev].rev())
406 return subset & bmrevs 406 return subset & bmrevs
407 407
408 bms = set([repo[r].rev() 408 bms = set([repo[r].rev()
409 for r in repo._bookmarks.values()]) 409 for r in repo._bookmarks.values()])
410 return baseset([r for r in subset if r in bms]) 410 return lazyset(subset, lambda r: r in bms)
411 411
412 def branch(repo, subset, x): 412 def branch(repo, subset, x):
413 """``branch(string or set)`` 413 """``branch(string or set)``
414 All changesets belonging to the given branch or the branches of the given 414 All changesets belonging to the given branch or the branches of the given
415 changesets. 415 changesets.