stream-clone: disable gc for the entry listing section for the v2 format
This is similar to the change we did for the v3 format in 6e4c8366c5ce.
The benchmark bellow show this gives us a notable gains, especially on larger
repositories.
### benchmark.name = hg.perf.stream-locked-section
# benchmark.name = hg.perf.stream-locked-section
# bin-env-vars.hg.flavor = default
# bin-env-vars.hg.py-re2-module = default
# benchmark.variants.version = v2
## data-env-vars.name = pypy-2018-08-01-zstd-sparse-revlog
5e931bf8707c: 0.503820 ~~~~~
1106d1bf695e: 0.470078 (-6.70%, -0.03)
## data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog
5e931bf8707c: 0.535756 ~~~~~
1106d1bf695e: 0.490249 (-8.49%, -0.05)
## data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog
5e931bf8707c: 1.327041 ~~~~~
1106d1bf695e: 1.174636 (-11.48%, -0.15)
## data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog
5e931bf8707c: 2.439158 ~~~~~
1106d1bf695e: 2.220515 (-8.96%, -0.22)
## data-env-vars.name = netbeans-2019-11-07-zstd-sparse-revlog
5e931bf8707c: 2.630794 ~~~~~
1106d1bf695e: 2.261473 (-14.04%, -0.37)
## data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog
5e931bf8707c: 5.769002 ~~~~~
1106d1bf695e: 5.062000 (-12.26%, -0.71)
## data-env-vars.name = mozilla-try-2019-02-18-zstd-sparse-revlog
5e931bf8707c: 13.351750 ~~~~~
1106d1bf695e: 12.346655 (-7.53%, -1.01)
## data-env-vars.name = mozilla-central-2024-03-22-zstd-sparse-revlog
5e931bf8707c: 10.772939 ~~~~~
1106d1bf695e: 9.495407 (-11.86%, -1.28)
## data-env-vars.name = mozilla-unified-2024-03-22-zstd-sparse-revlog
5e931bf8707c: 10.864297 ~~~~~
1106d1bf695e: 9.475597 (-12.78%, -1.39)
## data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog
5e931bf8707c: 17.448335 ~~~~~
1106d1bf695e: 16.027474 (-8.14%, -1.42)
$ hg init repo
$ cd repo
$ echo foo > bar
$ hg commit -Am default
adding bar
$ hg up -r null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg branch mine
marked working directory as branch mine
(branches are permanent and global, did you want a bookmark?)
$ echo hello > world
$ hg commit -Am hello
adding world
$ hg up -r null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg branch other
marked working directory as branch other
$ echo good > bye
$ hg commit -Am other
adding bye
$ hg up -r mine
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg clone -U -u . .#other ../b -r 0 -r 1 -r 2 -b other
abort: cannot specify both --noupdate and --updaterev
[10]
$ hg clone -U .#other ../b -r 0 -r 1 -r 2 -b other
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files (+2 heads)
new changesets 8c68ee086fd0:fcc393352796
$ rm -rf ../b
$ hg clone -u . .#other ../b -r 0 -r 1 -r 2 -b other
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files (+2 heads)
new changesets 8c68ee086fd0:fcc393352796
updating to branch mine
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf ../b
$ hg clone -u 0 .#other ../b -r 0 -r 1 -r 2 -b other
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files (+2 heads)
new changesets 8c68ee086fd0:fcc393352796
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf ../b
$ hg clone -u 1 .#other ../b -r 0 -r 1 -r 2 -b other
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files (+2 heads)
new changesets 8c68ee086fd0:fcc393352796
updating to branch mine
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf ../b
$ hg clone -u 2 .#other ../b -r 0 -r 1 -r 2 -b other
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files (+2 heads)
new changesets 8c68ee086fd0:fcc393352796
updating to branch other
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf ../b
Test -r mine ... mine is ignored:
$ hg clone -u 2 .#other ../b -r mine -r 0 -r 1 -r 2 -b other
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files (+2 heads)
new changesets 8c68ee086fd0:fcc393352796
updating to branch other
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf ../b
$ hg clone .#other ../b -b default -b mine
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files (+2 heads)
new changesets 8c68ee086fd0:fcc393352796
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf ../b
$ hg clone .#other ../b
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
new changesets fcc393352796
updating to branch other
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf ../b
$ hg clone -U . ../c -r 1 -r 2 > /dev/null
$ hg clone ../c ../b
updating to branch other
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf ../b ../c