tests/test-hooklib-enforce_draft_commits.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Mon, 25 Mar 2024 02:09:15 +0100
branchstable
changeset 51517 4ee50d98d35c
parent 44413 4cabeea6d214
permissions -rw-r--r--
phases: update the phase set as we go during retract boundary Apparently iterating over the `changed_revs` dictionary is very expensive. On mozilla-try-2019-02-18, a perf::unbundle call with a 10 000 changesets bundle gives give use the following timing. e57d4b868a3e: 4.6 seconds ac1c75188440: 102.5 seconds prev-changeset: 30.0 seconds this-changeset: 4.6 seconds So, the performance regression is gone. Once again: thanks to marvelous Python!

  $ cat <<EOF >> $HGRCPATH
  > [extensions]
  > hooklib =
  > 
  > [phases]
  > publish = False
  > EOF
  $ hg init a
  $ hg --cwd a debugbuilddag .
  $ hg --cwd a phase --public 0
  $ hg init b
  $ cat <<EOF >> b/.hg/hgrc
  > [hooks]
  > pretxnclose-phase.enforce_draft_commits = \
  >   python:hgext.hooklib.enforce_draft_commits.hook
  > EOF
  $ hg --cwd b pull ../a
  pulling from ../a
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  error: pretxnclose-phase.enforce_draft_commits hook failed: New changeset 1ea73414a91b in phase 'public' rejected
  transaction abort!
  rollback completed
  abort: New changeset 1ea73414a91b in phase 'public' rejected
  [255]
  $ hg --cwd a phase --force --draft 0
  $ hg --cwd b pull ../a
  pulling from ../a
  requesting all changes
  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 a phase --public 0
  $ hg --cwd b pull ../a
  pulling from ../a
  searching for changes
  no changes found
  error: pretxnclose-phase.enforce_draft_commits hook failed: Phase change from 'draft' to 'public' for 1ea73414a91b rejected
  abort: Phase change from 'draft' to 'public' for 1ea73414a91b rejected
  [255]