stream-clone: stop getting the file size of all file in v3
The point of v3 is to do less work in the locked section. It was currently not
the case.
This significantly boost performance. The following number comes from a large
private repository using perf::stream-locked-section:
base-line: 35.03 seconds
this-change: 24.50 seconds (-30%)
$ hg init repo
$ cd repo
$ echo a > a
$ hg ci -Am0
adding a
$ hg -q clone . foo
$ touch .hg/store/journal
$ echo foo > a
$ hg ci -Am0
abort: abandoned transaction found
(run 'hg recover' to clean up transaction)
[255]
$ hg recover
rolling back interrupted transaction
(verify step skipped, run `hg verify` to check your repository content)
recover, explicit verify
$ touch .hg/store/journal
$ hg ci -Am0
abort: abandoned transaction found
(run 'hg recover' to clean up transaction)
[255]
$ hg recover --verify -q
recover, no verify
$ touch .hg/store/journal
$ hg ci -Am0
abort: abandoned transaction found
(run 'hg recover' to clean up transaction)
[255]
$ hg recover --no-verify
rolling back interrupted transaction
(verify step skipped, run `hg verify` to check your repository content)
Check that zero-size journals are correctly aborted:
#if unix-permissions no-root
$ hg bundle -qa repo.hg
$ chmod -w foo/.hg/store/00changelog.i
$ hg -R foo unbundle repo.hg
adding changesets
transaction abort!
rollback completed
abort: $EACCES$: '$TESTTMP/repo/foo/.hg/store/.00changelog.i-*' (glob)
[255]
$ if test -f foo/.hg/store/journal; then echo 'journal exists :-('; fi
#endif