Mercurial > hg
view tests/test-narrow-acl-excludes.t @ 51505:c9ceb4f60256 stable 6.7
phases: avoid N² behavior in `advanceboundary`
We allowed duplicated entries in the deque, which each entry could potentially
insert all its ancestors. So advancing boundary for the full repository would
mean each revision would walk all its ancestors, resulting in O(N²) iteration.
For repository of any decent size, N² is quickly insane.
We introduce a simple set to avoid this and get back to reasonable performance.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 15 Mar 2024 01:31:57 +0100 |
parents | 9b44b25dece1 |
children |
line wrap: on
line source
Test exclusion-based ACL enforcement $ . "$TESTDIR/narrow-library.sh" $ hg init master $ cd master $ for x in `$TESTDIR/seq.py 3`; do > echo $x > "f$x" > hg add "f$x" > hg commit -m "Add $x" > done $ cat >> .hg/hgrc << EOF > [narrowacl] > default.includes=* > default.excludes=f2 f3 > test.excludes=f3 > EOF $ hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid $ cat hg.pid >> "$DAEMON_PIDS" $ cd .. $ hg clone http://localhost:$HGPORT1 narrowclone1 requesting all changes adding changesets adding manifests adding file changes added 3 changesets with 2 changes to 2 files new changesets * (glob) updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved The clone directory should only contain f1 and f2 $ ls -A -1 narrowclone1 | sort .hg f1 f2 Requirements should contain narrowhg $ hg debugrequires -R narrowclone1 | grep narrowhg narrowhg-experimental NarrowHG should exclude f3. $ hg -R narrowclone1 tracked I path:. X path:f3 Narrow should not be able to widen to include f3 $ hg -R narrowclone1 tracked --addinclude f3 comparing with http://localhost:$HGPORT1/ searching for changes adding changesets adding manifests adding file changes $ ls -A -1 narrowclone1 | sort .hg f1 f2 $ hg -R narrowclone1 tracked I path:. X path:f3 Narrow should not be able to remove the exclusion for f3 $ hg -R narrowclone1 tracked --removeexclude f3 comparing with http://localhost:$HGPORT1/ searching for changes abort: The following excludes cannot be removed for test: ['path:f3'] [255] $ ls -A -1 narrowclone1 | sort .hg f1 f2 $ hg -R narrowclone1 tracked I path:. X path:f3