Mercurial > hg
annotate tests/test-remotefilelog-blame.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 | 864f9f63d3ed |
children |
rev | line source |
---|---|
40722
0800d9e6e216
tests: disable remotefilelog on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40572
diff
changeset
|
1 #require no-windows |
0800d9e6e216
tests: disable remotefilelog on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40572
diff
changeset
|
2 |
40495
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 $ . "$TESTDIR/remotefilelog-library.sh" |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 |
40571
95a079ea1e19
tests: drop obsolete "hginit" alias in remotefilelog tests
Martin von Zweigbergk <martinvonz@google.com>
parents:
40495
diff
changeset
|
5 $ hg init master |
40495
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 $ cd master |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 $ cat >> .hg/hgrc <<EOF |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
8 > [remotefilelog] |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
9 > server=True |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
10 > EOF |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
11 $ echo x > x |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
12 $ hg commit -qAm x |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
13 $ echo y >> x |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
14 $ hg commit -qAm y |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
15 $ echo z >> x |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
16 $ hg commit -qAm z |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
17 $ echo a > a |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
18 $ hg commit -qAm a |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
19 |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
20 $ cd .. |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
21 |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 $ hgcloneshallow ssh://user@dummy/master shallow -q |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
23 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
24 $ cd shallow |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
25 |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
26 Test blame |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
27 |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
28 $ hg blame x |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
29 0: x |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
30 1: y |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
31 2: z |
3a333a582d7b
remotefilelog: import pruned-down remotefilelog extension from hg-experimental
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
32 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) |
42094
b1b216a241cc
remotefilelog: add tests of `hg grep -r 'wdir()'`
Augie Fackler <augie@google.com>
parents:
40722
diff
changeset
|
33 |
b1b216a241cc
remotefilelog: add tests of `hg grep -r 'wdir()'`
Augie Fackler <augie@google.com>
parents:
40722
diff
changeset
|
34 Test grepping the working directory. |
b1b216a241cc
remotefilelog: add tests of `hg grep -r 'wdir()'`
Augie Fackler <augie@google.com>
parents:
40722
diff
changeset
|
35 |
b1b216a241cc
remotefilelog: add tests of `hg grep -r 'wdir()'`
Augie Fackler <augie@google.com>
parents:
40722
diff
changeset
|
36 $ hg grep --all-files x |
b1b216a241cc
remotefilelog: add tests of `hg grep -r 'wdir()'`
Augie Fackler <augie@google.com>
parents:
40722
diff
changeset
|
37 x:x |
b1b216a241cc
remotefilelog: add tests of `hg grep -r 'wdir()'`
Augie Fackler <augie@google.com>
parents:
40722
diff
changeset
|
38 $ echo foo >> x |
b1b216a241cc
remotefilelog: add tests of `hg grep -r 'wdir()'`
Augie Fackler <augie@google.com>
parents:
40722
diff
changeset
|
39 $ hg grep --all-files x |
42095
864f9f63d3ed
remotefilelog: correctly reject wdir filenodes
Augie Fackler <augie@google.com>
parents:
42094
diff
changeset
|
40 x:x |