Fix undo after aborted commit bug
Commit would overwrite undo.dirstate unconditionally, so an undo after
an aborted commit would restore the dirstate from the aborted commit
and not the prior transaction.
This copies dirstate to journal.dirstate and moves it after a
successful transaction.
+ mkdir t
+ cd t
+ hg init
+ hg id
unknown
+ echo a
+ hg add a
+ hg commit -m test -d '0 0'
+ hg co
+ hg identify
acb14030fe0a tip
++ hg -q tip
++ cut -d : -f 2
+ T=acb14030fe0a21b60322c440ad2d20cf7685a376
+ echo 'acb14030fe0a21b60322c440ad2d20cf7685a376 first'
+ cat .hgtags
acb14030fe0a21b60322c440ad2d20cf7685a376 first
+ hg add .hgtags
+ hg commit -m 'add tags' -d '0 0'
+ hg tags
tip 1:b9154636be938d3d431e75a7c906504a079bfe07
first 0:acb14030fe0a21b60322c440ad2d20cf7685a376
+ hg identify
b9154636be93 tip
+ echo bb
+ hg status
M a
+ hg identify
b9154636be93+ tip
+ hg co first
+ hg id
acb14030fe0a+ first
+ hg -v id
acb14030fe0a21b60322c440ad2d20cf7685a376+ first
+ hg status
M a
+ echo 1
+ hg add b
+ hg commit -m branch -d '0 0'
+ hg id
c8edf04160c7 tip
+ hg co -m 1
+ hg id
c8edf04160c7+b9154636be93+ tip
+ hg status
M .hgtags
M a