Mercurial > hg
changeset 29912:1c1c2bce2f97
debugrevspec: transform and print parsed tree by stages
Prepares for adding new option to print transformed tree at each stage.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 21 Aug 2016 12:04:08 +0900 |
parents | b3ec902b2f3c |
children | 9cb950276d27 |
files | mercurial/commands.py |
diffstat | 1 files changed, 21 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Sun Aug 21 11:50:54 2016 +0900 +++ b/mercurial/commands.py Sun Aug 21 12:04:08 2016 +0900 @@ -3519,20 +3519,28 @@ Use --verbose to print the parsed tree before and after aliases expansion. """ + stages = [ + ('parsed', lambda tree: tree), + ('expanded', lambda tree: revset.expandaliases(ui, tree)), + ('concatenated', revset.foldconcat), + ('analyzed', revset.analyze), + ('optimized', revset.optimize), + ] + + showalways = set(['parsed']) + showchanged = set(['expanded', 'concatenated']) + if opts['optimize']: + showalways.add('optimized') + + printedtree = None tree = revset.parse(expr, lookup=repo.__contains__) - ui.note(revset.prettyformat(tree), "\n") - newtree = revset.expandaliases(ui, tree) - if newtree != tree: - ui.note(("* expanded:\n"), revset.prettyformat(newtree), "\n") - tree = newtree - newtree = revset.foldconcat(tree) - if newtree != tree: - ui.note(("* concatenated:\n"), revset.prettyformat(newtree), "\n") - if opts["optimize"]: - newtree = revset.analyze(newtree) - optimizedtree = revset.optimize(newtree) - ui.note(("* optimized:\n"), - revset.prettyformat(optimizedtree), "\n") + for n, f in stages: + tree = f(tree) + if n in showalways or (n in showchanged and tree != printedtree): + if n != 'parsed': + ui.note(("* %s:\n") % n) + ui.note(revset.prettyformat(tree), "\n") + printedtree = tree func = revset.match(ui, expr, repo) revs = func(repo)