view tests/test-revisions.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 be3d8178251e
children
line wrap: on
line source

  $ hg init repo
  $ cd repo

  $ echo 0 > a
  $ hg ci -qAm 0
  $ for i in 5 8 14 43 167; do
  >   hg up -q 0
  >   echo $i > a
  >   hg ci -qm $i
  > done
  $ cat <<EOF >> .hg/hgrc
  > [alias]
  > l = log -T '{rev}:{shortest(node,1)}\n'
  > EOF

  $ hg l
  5:00f
  4:7ba5d
  3:7ba57
  2:72
  1:9
  0:b
  $ cat <<EOF >> .hg/hgrc
  > [experimental]
  > revisions.disambiguatewithin=not 4
  > EOF
  $ hg l
  5:00
  4:7ba5d
  3:7b
  2:72
  1:9
  0:b
9 was unambiguous and still is
  $ hg l -r 9
  1:9
7 was ambiguous and still is
  $ hg l -r 7
  abort: ambiguous revision identifier: 7
  [10]
7b is no longer ambiguous
  $ hg l -r 7b
  3:7b

  $ cd ..