Tricks for taming large repo manifests and/or improving large repo clone times?

Arne Babenhauserheide arne_bab at web.de
Wed May 29 18:03:22 UTC 2019


Pierre-Yves David <pierre-yves.david at ens-lyon.org> writes:

> On 5/29/19 12:28 PM, Lawrence Stewart wrote:
> Manifest size issues I have met in the past are usually tackled through 
> the use of sparse-revlog. However, you might need to force a delta 
> recomputation to get the full benefit. You can do it using the following 
> command:
>
>    $ hg debugupgraderepo --optimize re-delta-all --run
>
> (this will take a while)

The effect I see from that is:


$ time hg debugupgraderepo --optimize re-delta-all --run
upgrade will perform the following actions:

requirements
   preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store

re-delta-all
   deltas within internal storage will be fully recomputed; this will likely drastically slow down execution time

beginning upgrade...
repository locked and read-only
creating temporary repository to stage migrated data: /tmp/freebsd_base/.hg/upgrade.wMMBte
(it is safe to interrupt this process any time before data migration completes)
migrating 1808767 total revisions (1179022 in filelogs, 314044 in manifests, 315701 in changelog)
migrating 9.35 GB in store; 927 GB tracked data
… 
replaced files will be backed up at /tmp/freebsd_base/.hg/upgradebackup.0DFqmi
… 
finalizing requirements file and making repository readable again
removing temporary repository /tmp/freebsd_base/.hg/upgrade.wMMBte
copy of old repository backed up at /tmp/freebsd_base/.hg/upgradebackup.0DFqmi
the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified

real	51m53,468s
user	49m51,621s
sys	1m30,654s

… 

$ du -hs .hg/store/* | sort -h
0	.hg/store/phaseroots
0	.hg/store/undo.phaseroots
4,0K	.hg/store/undo.backupfiles
688K	.hg/store/dh
6,2M	.hg/store/fncache
6,5M	.hg/store/undo
20M	.hg/store/00changelog.i
20M	.hg/store/00manifest.i
98M	.hg/store/00changelog.d
125M	.hg/store/00manifest.d
1,5G	.hg/store/data

Note also that most data is now in .hg/store/data/, so it’s no longer
bound to a single huge file but rather optimized for efficient
streaming retrieval from filesystem.

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 1076 bytes
Desc: not available
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20190529/6839db33/attachment.asc>


More information about the Mercurial mailing list