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 t1
+ hg commit -m 1 -d 0 0
+ hg clone a b
+ hg add t2
+ hg commit -m 2 -d 0 0
+ hg add t3
+ hg commit -m 3 -d 0 0
+ hg push ../a
pushing to ../a
searching for changes
abort: unsynced remote changes!
(did you forget to sync? use push -f to force)
+ hg pull ../a
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
+ hg push ../a
pushing to ../a
searching for changes
abort: push creates new remote branches!
(did you forget to merge? use push -f to force)
+ hg up -m
+ hg commit -m 4 -d 0 0
+ hg push ../a
pushing to ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files