transactions: avoid late tear-down (issue641)
We use weak references (ugh) to avoid having to manually delete
transaction references out of each call frame when an exception occurs.
#!/bin/sh
hg init
touch unknown
touch a
hg add a
hg ci -m "1" -d "1000000 0"
touch b
hg add b
hg ci -m "2" -d "1000000 0"
echo %% Should show unknown
hg status
hg revert -r 0 --all
echo %% Should show unknown and b removed
hg status
echo %% Should show a and unknown
ls