##// END OF EJS Templates
debugrevspec: transform and print parsed tree by stages...
Yuya Nishihara -
r29912:1c1c2bce default
parent child Browse files
Show More
@@ -3519,20 +3519,28 b' def debugrevspec(ui, repo, expr, **opts)'
3519 Use --verbose to print the parsed tree before and after aliases
3519 Use --verbose to print the parsed tree before and after aliases
3520 expansion.
3520 expansion.
3521 """
3521 """
3522 stages = [
3523 ('parsed', lambda tree: tree),
3524 ('expanded', lambda tree: revset.expandaliases(ui, tree)),
3525 ('concatenated', revset.foldconcat),
3526 ('analyzed', revset.analyze),
3527 ('optimized', revset.optimize),
3528 ]
3529
3530 showalways = set(['parsed'])
3531 showchanged = set(['expanded', 'concatenated'])
3532 if opts['optimize']:
3533 showalways.add('optimized')
3534
3535 printedtree = None
3522 tree = revset.parse(expr, lookup=repo.__contains__)
3536 tree = revset.parse(expr, lookup=repo.__contains__)
3523 ui.note(revset.prettyformat(tree), "\n")
3537 for n, f in stages:
3524 newtree = revset.expandaliases(ui, tree)
3538 tree = f(tree)
3525 if newtree != tree:
3539 if n in showalways or (n in showchanged and tree != printedtree):
3526 ui.note(("* expanded:\n"), revset.prettyformat(newtree), "\n")
3540 if n != 'parsed':
3527 tree = newtree
3541 ui.note(("* %s:\n") % n)
3528 newtree = revset.foldconcat(tree)
3542 ui.note(revset.prettyformat(tree), "\n")
3529 if newtree != tree:
3543 printedtree = tree
3530 ui.note(("* concatenated:\n"), revset.prettyformat(newtree), "\n")
3531 if opts["optimize"]:
3532 newtree = revset.analyze(newtree)
3533 optimizedtree = revset.optimize(newtree)
3534 ui.note(("* optimized:\n"),
3535 revset.prettyformat(optimizedtree), "\n")
3536
3544
3537 func = revset.match(ui, expr, repo)
3545 func = revset.match(ui, expr, repo)
3538 revs = func(repo)
3546 revs = func(repo)
General Comments 0
You need to be logged in to leave comments. Login now