Fix hg clone race with writer
Most read operations in hg don't need locks because we order reads and
writes for consistency. Clone is an exception to this as we're copying
entire file histories and could end up with more file history copied
than we have commits.
For now, make clone take a lock on the source repo. Non-hardlinked
clone should eventually be changed to use lockless pull.
+ 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:f4d7a8c73d231bc078e2a5e791325e55e8a4c252
0:232e179b3f294d467cfa66e1439bc5b0d44e4a93
+ hg id
f4d7a8c73d23 tip
+ hg update -C 0
+ hg id
232e179b3f29
+ hg id
232e179b3f29+
+ hg revert
+ hg diff
+ hg status
+ hg id
232e179b3f29
+ hg update
+ hg diff
+ hg status
+ hg id
f4d7a8c73d23 tip
+ hg update -C 0
+ hg update
merge: warning: conflicts during merge
merging file1
merging file1 failed!
+ hg diff
diff -r f4d7a8c73d23 file1
--- a/file1
+++ b/file1
@@ -1,3 +1,7 @@
added file1
another line of text
+<<<<<<<
+changed file1 different
+=======
changed file1
+>>>>>>>
+ hg status
M file1
+ hg id
f4d7a8c73d23+ tip
+ hg revert
+ hg diff
+ hg status
+ hg id
f4d7a8c73d23 tip
+ hg revert -r tip
+ hg diff
+ hg status
+ hg id
f4d7a8c73d23 tip
+ hg update -C
+ hg diff
+ hg status
+ hg id
f4d7a8c73d23 tip