revset: fix alias substitution recursion (
issue3240)
The revset aliases expansion worked like:
expr = "some revset"
for alias in aliases:
expr = alias.process(expr)
where "process" was replacing the alias with its *unexpanded* substitution,
recursively. So it only worked when aliases were applied in proper dependency
order.
This patch rewrites the expansion process so all aliases are expanded
recursively at every tree level, after parent alias rewriting and variable
expansion.
test that 'hg commit' does not crash if the user removes a newly added file
$ hg init
$ echo This is file a1 > a
$ hg add a
$ hg commit -m "commit #0"
$ touch b
$ hg add b
$ rm b
$ hg commit -A -m"comment #1"
removing b
nothing changed
[1]