Mercurial > hg
view tests/test-narrow-acl-excludes.t @ 52217:96b113d22b34 stable
rust-update: handle SIGINT from long-running update threads
The current code does not respond to ^C until after the Rust bit is finished
doing its work. This is expected, since Rust holds the GIL for the duration
of the call and does not call `PyErr_CheckSignals`. Freeing the GIL to do our
work does not really improve anything since the Rust threads are still going,
and the only way of cancelling a thread is by making it cooperate.
So we do the following:
- remember the SIGINT handler in hg-cpython and reset it after the call
into core (see inline comment in `update.rs` about this)
- make all update threads watch for a global `AtomicBool` being `true`,
and if so stop their work
- reset the global bool and exit early (i.e. before writing the dirstate)
- raise SIGINT from `hg-cpython` if update returns `InterruptReceived`
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Tue, 12 Nov 2024 12:52:13 +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