Fix 3-way-merge of original parent, workdir and new parent.
The dirstate has to match what is in the repository (what would be
checked out with 'hg update -C'), because the resulting file may be
identical to the new parent, or it may be completely different.
Previously the dirstate wasn't updated, so if you changed the file to
look like the original parent, it might be considered unmodified
relative to the new parent.
+ hg init
+ hg add file1 file2
+ hg commit -m added file1 and file2 -d 0 0 -u user
+ hg commit -m changed file1 -d 0 0 -u user
+ hg -q log
1:3aa14bbc23d90e3f8b5b639b4a43d76509bae76c
0:8633637036c18f021d771208e16ae3508ab81d28
+ hg id
3aa14bbc23d9 tip
+ hg update -C 0
+ hg id
8633637036c1
+ hg id
8633637036c1+
+ hg revert
+ hg diff
+ hg status
+ hg id
8633637036c1
+ hg update
+ hg diff
+ hg status
+ hg id
3aa14bbc23d9 tip
+ hg update -C 0
+ hg update
merge: warning: conflicts during merge
merging file1
merging file1 failed!
+ hg diff
diff -r 3aa14bbc23d9 file1
--- a/file1
+++ b/file1
@@ -1,2 +1,6 @@
added file1
+<<<<<<<
+changed file1 different
+=======
changed file1
+>>>>>>>
+ hg status
M file1
+ hg id
3aa14bbc23d9+ tip
+ hg revert
+ hg diff
+ hg status
+ hg id
3aa14bbc23d9 tip
+ hg revert -r tip
+ hg diff
+ hg status
+ hg id
3aa14bbc23d9 tip
+ hg update -C
+ hg diff
+ hg status
+ hg id
3aa14bbc23d9 tip