Mercurial > hg
view tests/test-convert-identity.t @ 43231:30570a056fa8
sidedatacopies: only store an entry if it has values
This will make for a shorter storage and help use to write faster code in simple
case. This change already provided a speed boost for copy tracing.
For example here is combined time of running copies tracing on a 6989 pairs of
revision on the pypy repos:
before: 771s
after: 631s - 18%
This also has a very positive impact on changelog size. For example here are the
number for the `00changelog.d` file of pypy.
before: 30449712 Bytes
after: 24973718 Bytes - 18%
This give an overall quite acceptable overhead for storing copies into the
changelog:
filelog-only: 23370586
sidedata: 24973718 Bytes + 7%
Differential Revision: https://phab.mercurial-scm.org/D7068
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 02 Oct 2019 14:38:34 -0400 |
parents | a2c02877b097 |
children | 6c56277317c2 |
line wrap: on
line source
Testing that convert.hg.preserve-hash=true can be used to make hg convert from hg repo to hg repo preserve hashes, even if the computation of the files list in commits change slightly between hg versions. $ cat <<'EOF' >> "$HGRCPATH" > [extensions] > convert = > EOF $ cat <<'EOF' > changefileslist.py > from mercurial import (changelog, extensions) > def wrap(orig, clog, manifest, files, *args, **kwargs): > return orig(clog, manifest, [b"a"], *args, **kwargs) > def extsetup(ui): > extensions.wrapfunction(changelog.changelog, 'add', wrap) > EOF $ hg init repo $ cd repo $ echo a > a; hg commit -qAm a $ echo b > a; hg commit -qAm b $ hg up -qr 0; echo c > c; hg commit -qAm c $ hg merge -qr 1 $ hg commit -m_ --config extensions.x=../changefileslist.py $ hg log -r . -T '{node|short} {files|json}\n' c085bbe93d59 ["a"] Now that we have a commit with a files list that's not what the current hg version would create, check that convert either fixes it or keeps it depending on config: $ hg convert -q . ../convert $ hg --cwd ../convert log -r tip -T '{node|short} {files|json}\n' b7c4d4bbacd3 [] $ rm -rf ../convert $ hg convert -q . ../convert --config convert.hg.preserve-hash=true $ hg --cwd ../convert log -r tip -T '{node|short} {files|json}\n' c085bbe93d59 ["a"] $ rm -rf ../convert