tests/test-check-commit.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 05 Apr 2024 11:05:54 +0200
changeset 51576 de5bf3fe0233
parent 37816 33817e09c663
permissions -rw-r--r--
revset: stop serializing node when using "%ln" Turning hundred of thousand of node from node to hex and back can be slow… what about we stop doing it? In many case were we are using node id we should be using revision id. However this is not a good reason to have a stupidly slow implementation of "%ln". This caught my attention again because the phase discovery during push make an extensive use of "%ln" or huge set. In absolute, that phase discovery probably should use "%ld" and need to improves its algorithmic complexity, but improving "%ln" seems simple and long overdue. This greatly speeds up `hg push` on repository with many drafts. Here are some relevant poulpe benchmarks: ### 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: 44.235070 after: 20.416329 (-53.85%, -23.82) ## benchmark.variants.revs = any-100-extra-rev before: 49.234697 after: 26.519829 (-46.14%, -22.71) ### benchmark.name = hg.command.bundle # bin-env-vars.hg.flavor = default # bin-env-vars.hg.py-re2-module = default # benchmark.variants.revs = all # benchmark.variants.type = none-streamv2 ## data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog before: 10.138396 after: 7.750458 (-23.55%, -2.39) ## data-env-vars.name = mercurial-public-2024-03-22-zstd-sparse-revlog before: 1.263859 after: 0.700229 (-44.60%, -0.56) ## data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog before: 399.484481 after: 346.5089 (-13.26%, -52.98) ## data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog before: 4.540080 after: 3.401700 (-25.07%, -1.14) ## data-env-vars.name = tryton-public-2024-03-22-zstd-sparse-revlog before: 2.975765 after: 1.870798 (-37.13%, -1.10)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22067
14306a686e71 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     1
#require test-repo
14306a686e71 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     2
14306a686e71 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     3
Enable obsolescence to avoid the warning issue when obsmarker are found
14306a686e71 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     4
29219
3c9066ed557c tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents: 28293
diff changeset
     5
  $ . "$TESTDIR/helpers-testrepo.sh"
22067
14306a686e71 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     6
14306a686e71 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     7
Go back in the hg repo
14306a686e71 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     8
14306a686e71 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     9
  $ cd $TESTDIR/..
14306a686e71 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    10
37816
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    11
  $ REVSET='not public() and ::. and not desc("# no-check-commit")'
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    12
37687
8872d46643b6 test-check-commit: don't run hg per commit
Yuya Nishihara <yuya@tcha.org>
parents: 33204
diff changeset
    13
  $ mkdir "$TESTTMP/p"
37816
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    14
  $ REVS=`testrepohg log -r "$REVSET" -T.`
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    15
  $ if [ -n "$REVS" ] ; then
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    16
  >   testrepohg export --git -o "$TESTTMP/p/%n-%h" -r "$REVSET"
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    17
  >   for f in `ls "$TESTTMP/p"`; do
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    18
  >      contrib/check-commit < "$TESTTMP/p/$f" > "$TESTTMP/check-commit.out"
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    19
  >      if [ $? -ne 0 ]; then
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    20
  >          node="${f##*-}"
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    21
  >          echo "Revision $node does not comply with rules"
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    22
  >          echo '------------------------------------------------------'
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    23
  >          cat ${TESTTMP}/check-commit.out
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    24
  >          echo
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    25
  >     fi
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    26
  >   done
33817e09c663 tests: fix test-check-commit.t when all commits are public
Augie Fackler <augie@google.com>
parents: 37687
diff changeset
    27
  > fi