Mercurial > hg
view tests/test-remotefilelog-bundles.t @ 50400:95acba2c29f6
encoding: avoid quadratic time complexity when json-encoding non-UTF8 strings
Apparently the code uses "+=" with a bytes object, which is linear-time, so the
whole encoding is quadratic-time. This patch makes us use a bytearray object,
instead, which has a(n amortized-)constant-time append operation.
The encoding is still not particularly fast, but at least a 10MB file
takes tens of seconds, not many hours to encode.
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Mon, 06 Mar 2023 11:27:57 +0000 |
parents | 47a9527731c3 |
children |
line wrap: on
line source
#require no-windows $ . "$TESTDIR/remotefilelog-library.sh" $ hg init master $ cd master $ cat >> .hg/hgrc <<EOF > [remotefilelog] > server=True > EOF $ echo x > x $ hg commit -qAm x $ echo y >> x $ hg commit -qAm y $ echo z >> x $ hg commit -qAm z $ cd .. $ hgcloneshallow ssh://user@dummy/master shallow -q 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) $ cd shallow Unbundling a shallow bundle $ hg strip -r 66ee28d0328c 1 files updated, 0 files merged, 0 files removed, 0 files unresolved saved backup bundle to $TESTTMP/shallow/.hg/strip-backup/66ee28d0328c-3d7aafd1-backup.hg (glob) 2 files fetched over 2 fetches - (2 misses, 0.00% hit ratio) over *s (glob) $ hg unbundle .hg/strip-backup/66ee28d0328c-3d7aafd1-backup.hg adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 1 files new changesets 66ee28d0328c:16db62c5946f (run 'hg update' to get a working copy) Unbundling a full bundle $ hg -R ../master bundle -r 66ee28d0328c:: --base "66ee28d0328c^" ../fullbundle.hg 2 changesets found $ hg strip -r 66ee28d0328c saved backup bundle to $TESTTMP/shallow/.hg/strip-backup/66ee28d0328c-3d7aafd1-backup.hg (glob) $ hg unbundle ../fullbundle.hg adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 1 files new changesets 66ee28d0328c:16db62c5946f (2 drafts) (run 'hg update' to get a working copy) Pulling from a shallow bundle $ hg strip -r 66ee28d0328c --config remotefilelog.strip.includefiles=none saved backup bundle to $TESTTMP/shallow/.hg/strip-backup/66ee28d0328c-3d7aafd1-backup.hg (glob) $ hg pull -r 66ee28d0328c .hg/strip-backup/66ee28d0328c-3d7aafd1-backup.hg pulling from .hg/strip-backup/66ee28d0328c-3d7aafd1-backup.hg searching for changes adding changesets adding manifests adding file changes added 1 changesets with 0 changes to 0 files new changesets 66ee28d0328c (1 drafts) (run 'hg update' to get a working copy) Pulling from a full bundle, also testing that strip produces a full bundle by default. $ hg strip -r 66ee28d0328c saved backup bundle to $TESTTMP/shallow/.hg/strip-backup/66ee28d0328c-b6ee89e7-backup.hg (glob) $ hg pull -r 66ee28d0328c .hg/strip-backup/66ee28d0328c-b6ee89e7-backup.hg pulling from .hg/strip-backup/66ee28d0328c-b6ee89e7-backup.hg searching for changes abort: cannot pull from full bundles (use `hg unbundle` instead) [255]