Mercurial > hg
view tests/test-hooklib-reject_merge_commits.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 | 4cabeea6d214 |
children |
line wrap: on
line source
$ cat <<EOF >> $HGRCPATH > [extensions] > hooklib = > > [phases] > publish = False > EOF $ hg init a $ hg --cwd a debugbuilddag '.:parent.:childa*parent/childa<parent@otherbranch./childa' $ hg --cwd a log -G o changeset: 4:a9fb040caedd |\ branch: otherbranch | | tag: tip | | parent: 3:af739dfc49b4 | | parent: 1:66f7d451a68b | | user: debugbuilddag | | date: Thu Jan 01 00:00:04 1970 +0000 | | summary: r4 | | | o changeset: 3:af739dfc49b4 | | branch: otherbranch | | parent: 0:1ea73414a91b | | user: debugbuilddag | | date: Thu Jan 01 00:00:03 1970 +0000 | | summary: r3 | | +---o changeset: 2:a6b287721c3b | |/ parent: 0:1ea73414a91b | | parent: 1:66f7d451a68b | | user: debugbuilddag | | date: Thu Jan 01 00:00:02 1970 +0000 | | summary: r2 | | o | changeset: 1:66f7d451a68b |/ tag: childa | user: debugbuilddag | date: Thu Jan 01 00:00:01 1970 +0000 | summary: r1 | o changeset: 0:1ea73414a91b tag: parent user: debugbuilddag date: Thu Jan 01 00:00:00 1970 +0000 summary: r0 $ hg init b $ cat <<EOF >> b/.hg/hgrc > [hooks] > pretxnchangegroup.reject_merge_commits = \ > python:hgext.hooklib.reject_merge_commits.hook > EOF $ hg --cwd b pull ../a -r a6b287721c3b pulling from ../a adding changesets adding manifests adding file changes error: pretxnchangegroup.reject_merge_commits hook failed: a6b287721c3b rejected as merge on the same branch. Please consider rebase. transaction abort! rollback completed abort: a6b287721c3b rejected as merge on the same branch. Please consider rebase. [255] $ hg --cwd b pull ../a -r 1ea73414a91b pulling from ../a adding changesets adding manifests adding file changes added 1 changesets with 0 changes to 0 files new changesets 1ea73414a91b (1 drafts) (run 'hg update' to get a working copy) $ hg --cwd b pull ../a -r a9fb040caedd pulling from ../a searching for changes adding changesets adding manifests adding file changes added 3 changesets with 0 changes to 0 files new changesets 66f7d451a68b:a9fb040caedd (3 drafts) (run 'hg update' to get a working copy)