tests/test-username-newline.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 09 Apr 2024 02:54:19 +0200
changeset 51586 1cef1412af3e
parent 49621 55c6ebd11cb9
permissions -rw-r--r--
phases: rework the logic of _pushdiscoveryphase to bound complexity This rework the various graph traversal in _pushdiscoveryphase to keep the complexity in check. This is done though a couple of things: - first, limiting the space we have to explore, for example, if we are not in publishing push, we don't need to consider remote draft roots that are also draft locally, as there is nothing to be moved there. - avoid unbounded descendant computation, and use the faster "rev between" computation. This provide a massive boost to performance when exchanging with repository with a massive amount of draft, like mozilla-try: ### data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog # benchmark.name = hg.command.push # bin-env-vars.hg.flavor = default # bin-env-vars.hg.py-re2-module = default # benchmark.variants.explicit-rev = all-out-heads # benchmark.variants.issue6528 = disabled # benchmark.variants.protocol = ssh # benchmark.variants.reuse-external-delta-parent = default ## benchmark.variants.revs = any-1-extra-rev before: 20.346590 seconds after: 11.232059 seconds (-38.15%, -7.48 seconds) ## benchmark.variants.revs = any-100-extra-rev before: 24.752051 seconds after: 15.367412 seconds (-37.91%, -9.38 seconds) After this changes, the push operation is still quite too slow. Some of this can be attributed to general phases slowness (reading all the roots from disk for example) and other know slowness (not using persistent-nodemap, branchmap, tags, etc. We are also working on them, but with this series, phase discovery during push no longer showing up in profile and this is a pretty nice and bit low-hanging fruit out of the way. ### (same case as the above) # benchmark.variants.revs = any-1-extra-rev pre-%ln-change: 44.235070 this-changeset: 11.232059 seconds (-74.61%, -33.00 seconds) # benchmark.variants.revs = any-100-extra-rev pre-%ln-change: 49.234697 this-changeset: 15.367412 seconds (-68.79%, -33.87 seconds) Note that with this change, the `hg push` performance is now much closer to the `hg pull` performance, even it still lagging behind a bit. (and the overall performance are still too slow). ### data-env-vars.name = mozilla-try-2023-03-22-ds2-pnm # benchmark.variants.explicit-rev = all-out-heads # benchmark.variants.issue6528 = disabled # benchmark.variants.protocol = ssh # benchmark.variants.pulled-delta-reuse-policy = default # bin-env-vars.hg.flavor = rust ## benchmark.variants.revs = any-1-extra-rev hg.command.pull: 6.517450 hg.command.push: 11.219888 ## benchmark.variants.revs = any-100-extra-rev hg.command.pull: 10.160991 hg.command.push: 14.251107 ### data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog # bin-env-vars.hg.py-re2-module = default # benchmark.variants.explicit-rev = all-out-heads # benchmark.variants.issue6528 = disabled # benchmark.variants.protocol = ssh # benchmark.variants.pulled-delta-reuse-policy = default ## bin-env-vars.hg.flavor = default ## benchmark.variants.revs = any-1-extra-rev hg.command.pull: 8.577772 hg.command.push: 11.232059 ## bin-env-vars.hg.flavor = default ## benchmark.variants.revs = any-100-extra-rev hg.command.pull: 13.152976 hg.command.push: 15.367412 ## bin-env-vars.hg.flavor = rust ## benchmark.variants.revs = any-1-extra-rev hg.command.pull: 8.731982 hg.command.push: 11.178751 ## bin-env-vars.hg.flavor = rust ## benchmark.variants.revs = any-100-extra-rev hg.command.pull: 13.184236 hg.command.push: 15.620843
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49621
55c6ebd11cb9 tests: run many tests in $TESTTMP/repo instead of $TESTTMP
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 46116
diff changeset
     1
  $ hg init repo
55c6ebd11cb9 tests: run many tests in $TESTTMP/repo instead of $TESTTMP
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 46116
diff changeset
     2
  $ cd repo
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
     3
  $ touch a
7035
9d023ef7b467 forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff changeset
     4
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
     5
  $ unset HGUSER
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
     6
  $ echo "[ui]" >> .hg/hgrc
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
     7
  $ echo "username= foo" >> .hg/hgrc
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
     8
  $ echo "          bar1" >> .hg/hgrc
7035
9d023ef7b467 forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff changeset
     9
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    10
  $ hg ci -Am m
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    11
  adding a
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    12
  abort: username 'foo\nbar1' contains a newline
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    13
  
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12301
diff changeset
    14
  [255]
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    15
  $ rm .hg/hgrc
7035
9d023ef7b467 forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff changeset
    16
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    17
  $ HGUSER=`(echo foo; echo bar2)` hg ci -Am m
33617
5ac845ca059a commit: don't let failed commit with --addremove update dirstate (issue5645)
Martin von Zweigbergk <martinvonz@google.com>
parents: 12346
diff changeset
    18
  adding a
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    19
  abort: username 'foo\nbar2' contains a newline
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    20
  
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12301
diff changeset
    21
  [255]
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    22
  $ hg ci -Am m -u "`(echo foo; echo bar3)`"
33617
5ac845ca059a commit: don't let failed commit with --addremove update dirstate (issue5645)
Martin von Zweigbergk <martinvonz@google.com>
parents: 12346
diff changeset
    23
  adding a
12301
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    24
  transaction abort!
3a082866422a tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents: 7035
diff changeset
    25
  rollback completed
45906
95c4cca641f6 errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents: 33617
diff changeset
    26
  abort: username 'foo\nbar3' contains a newline
46116
17a695357270 errors: use detailed exit code 50 for StorageError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
    27
  [50]
7035
9d023ef7b467 forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff changeset
    28