annotate tests/test-chainsaw-update.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 3b46e8e6a401
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
1 ============================================
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
2 Tests for the admin::chainsaw-update command
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
3 ============================================
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
4
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
5 setup
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
6 =====
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
7
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
8 $ hg init src
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
9 $ cd src
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
10 $ echo 1 > root
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
11 $ hg add root
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
12 $ hg ci -Am R_0
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
13 $ hg branch A
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
14 marked working directory as branch A
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
15 (branches are permanent and global, did you want a bookmark?)
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
16 $ echo 42 > bar
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
17 $ hg add bar
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
18 $ hg ci -Am A_0
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
19 $ echo 1337 > bar
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
20 $ hg ci -Am A_1
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
21 $ hg update 'desc(R_0)'
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
22 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
23 $ echo 1 > foo
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
24 $ hg add foo
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
25 $ hg ci -Am B_0
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
26 $ hg log -G
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
27 @ changeset: 3:bfcb8e629987
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
28 | tag: tip
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
29 | parent: 0:06f48e4098b8
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
30 | user: test
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
31 | date: Thu Jan 01 00:00:00 1970 +0000
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
32 | summary: B_0
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
33 |
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
34 | o changeset: 2:7fd8de258aa4
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
35 | | branch: A
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
36 | | user: test
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
37 | | date: Thu Jan 01 00:00:00 1970 +0000
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
38 | | summary: A_1
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
39 | |
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
40 | o changeset: 1:ae1692b8aadb
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
41 |/ branch: A
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
42 | user: test
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
43 | date: Thu Jan 01 00:00:00 1970 +0000
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
44 | summary: A_0
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
45 |
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
46 o changeset: 0:06f48e4098b8
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
47 user: test
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
48 date: Thu Jan 01 00:00:00 1970 +0000
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
49 summary: R_0
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
50
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
51 $ cd ..
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
52
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
53 Actual tests
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
54 ============
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
55
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
56 Initial cloning if needed
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
57 -------------------------
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
58
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
59 $ hg admin::chainsaw-update --dest repo --rev default --source ./src
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
60 no such directory: "repo"
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
61 creating repository at "repo"
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
62 recovering after interrupted transaction, if any
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
63 no interrupted transaction available
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
64 pulling from ./src
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
65 updating to revision 'default'
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
66 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
67 chainsaw-update to revision 'default' for repository at '$TESTTMP/repo' done
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
68
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
69 $ cd repo
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
70 $ hg log -G
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
71 @ changeset: 3:bfcb8e629987
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
72 | tag: tip
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
73 | parent: 0:06f48e4098b8
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
74 | user: test
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
75 | date: Thu Jan 01 00:00:00 1970 +0000
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
76 | summary: B_0
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
77 |
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
78 | o changeset: 2:7fd8de258aa4
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
79 | | branch: A
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
80 | | user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
81 | | date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
82 | | summary: A_1
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
83 | |
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
84 | o changeset: 1:ae1692b8aadb
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
85 |/ branch: A
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
86 | user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
87 | date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
88 | summary: A_0
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
89 |
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
90 o changeset: 0:06f48e4098b8
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
91 user: test
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
92 date: Thu Jan 01 00:00:00 1970 +0000
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
93 summary: R_0
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
94
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
95 $ hg status -A
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
96 C foo
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
97 C root
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
98 $ cat foo
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
99 1
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
100
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
101 Test lock breacking capabilities
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
102 --------------------------------
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
103
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
104 Demonstrate lock-breaking capabilities with locks that regular Mercurial
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
105 operation would not break, because the hostnames registered in locks differ
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
106 from the current hostname (happens a lot with succesive containers):
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
107
51956
3b46e8e6a401 tests: provide an alternate fake lock for filesystems without symlink support
Matt Harbison <matt_harbison@yahoo.com>
parents: 51503
diff changeset
108 #if symlink
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
109 $ ln -s invalid.host.test/effffffc:171814 .hg/store/lock
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
110 $ ln -s invalid.host.test/effffffc:171814 .hg/wlock
51956
3b46e8e6a401 tests: provide an alternate fake lock for filesystems without symlink support
Matt Harbison <matt_harbison@yahoo.com>
parents: 51503
diff changeset
111 #else
3b46e8e6a401 tests: provide an alternate fake lock for filesystems without symlink support
Matt Harbison <matt_harbison@yahoo.com>
parents: 51503
diff changeset
112 $ printf 'invalid.host.test/effffffc:171814' > .hg/store/lock
3b46e8e6a401 tests: provide an alternate fake lock for filesystems without symlink support
Matt Harbison <matt_harbison@yahoo.com>
parents: 51503
diff changeset
113 $ printf 'invalid.host.test/effffffc:171814' > .hg/wlock
3b46e8e6a401 tests: provide an alternate fake lock for filesystems without symlink support
Matt Harbison <matt_harbison@yahoo.com>
parents: 51503
diff changeset
114 #endif
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
115 $ hg debuglock
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
116 lock: (.*?), process 171814, host invalid.host.test/effffffc \((\d+)s\) (re)
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
117 wlock: (.*?), process 171814, host invalid.host.test/effffffc \((\d+)s\) (re)
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
118 [2]
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
119
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
120 $ hg admin::chainsaw-update --no-purge-ignored --dest . --rev default --source ../src
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
121 loaded repository at "."
51431
fe68a2dc0bf2 chainsaw-update: log actual locks breaking
Georges Racinet <georges.racinet@octobus.net>
parents: 51429
diff changeset
122 had to break store lock
fe68a2dc0bf2 chainsaw-update: log actual locks breaking
Georges Racinet <georges.racinet@octobus.net>
parents: 51429
diff changeset
123 had to break working copy lock
fe68a2dc0bf2 chainsaw-update: log actual locks breaking
Georges Racinet <georges.racinet@octobus.net>
parents: 51429
diff changeset
124 recovering after interrupted transaction, if any
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
125 no interrupted transaction available
51431
fe68a2dc0bf2 chainsaw-update: log actual locks breaking
Georges Racinet <georges.racinet@octobus.net>
parents: 51429
diff changeset
126 pulling from ../src
fe68a2dc0bf2 chainsaw-update: log actual locks breaking
Georges Racinet <georges.racinet@octobus.net>
parents: 51429
diff changeset
127 updating to revision 'default'
fe68a2dc0bf2 chainsaw-update: log actual locks breaking
Georges Racinet <georges.racinet@octobus.net>
parents: 51429
diff changeset
128 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
fe68a2dc0bf2 chainsaw-update: log actual locks breaking
Georges Racinet <georges.racinet@octobus.net>
parents: 51429
diff changeset
129 chainsaw-update to revision 'default' for repository at '$TESTTMP/repo' done
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
130
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
131 Test file purging capabilities
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
132 ------------------------------
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
133
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
134 Let's also add local modifications (tracked and untracked) to demonstrate the
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
135 purging.
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
136
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
137 $ echo untracked > bar
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
138 $ echo modified > foo
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
139 $ hg status -A
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
140 M foo
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
141 ? bar
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
142 C root
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
143
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
144 $ echo 2 > ../src/foo
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
145 $ hg -R ../src commit -mB_1
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
146 $ hg admin::chainsaw-update --dest . --rev default --source ../src -q
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
147 no interrupted transaction available
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
148 $ hg log -G
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
149 @ changeset: 4:973ab81c95fb
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
150 | tag: tip
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
151 | user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
152 | date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
153 | summary: B_1
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
154 |
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
155 o changeset: 3:bfcb8e629987
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
156 | parent: 0:06f48e4098b8
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
157 | user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
158 | date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
159 | summary: B_0
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
160 |
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
161 | o changeset: 2:7fd8de258aa4
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
162 | | branch: A
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
163 | | user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
164 | | date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
165 | | summary: A_1
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
166 | |
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
167 | o changeset: 1:ae1692b8aadb
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
168 |/ branch: A
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
169 | user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
170 | date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
171 | summary: A_0
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
172 |
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
173 o changeset: 0:06f48e4098b8
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
174 user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
175 date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
176 summary: R_0
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
177
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
178 $ hg status -A
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
179 C foo
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
180 C root
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
181 $ cat foo
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
182 2
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
183
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
184 Now behaviour with respect to ignored files: they are not purged if
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
185 the --no-purge-ignored flag is passed, but they are purged by default
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
186
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
187 $ echo bar > .hgignore
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
188 $ hg ci -Aqm hgignore
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
189 $ echo ignored > bar
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
190 $ hg status --all
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
191 I bar
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
192 C .hgignore
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
193 C foo
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
194 C root
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
195
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
196 $ hg admin::chainsaw-update --no-purge-ignored --dest . --rev default --source ../src -q
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
197 no interrupted transaction available
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
198 $ hg status --all
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
199 I bar
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
200 C .hgignore
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
201 C foo
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
202 C root
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
203 $ cat bar
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
204 ignored
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
205
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
206 $ hg admin::chainsaw-update --dest . --rev default --source ../src -q
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
207 no interrupted transaction available
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
208 $ hg status --all
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
209 C .hgignore
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
210 C foo
51432
e79c7320605f chainsaw-update: use a graph with branching in graph
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51431
diff changeset
211 C root
51429
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
212 $ test -f bar
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
213 [1]
bc88aa7472de chainsaw: new extension for dangerous operations
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
214
51433
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
215 test --minimal-initial-cloning variant
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
216 --------------------------------------
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
217
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
218 With `--minimal-initial-cloning`, there is no "requesting all changes"
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
219 message. Hence clone bundles would be bypassed (TODO test both cases
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
220 # with an actual clone-bundle)
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
221
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
222 $ cd ..
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
223 $ hg admin::chainsaw-update --dest repo2 --rev default --source src --initial-clone-minimal
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
224 no such directory: "repo2"
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
225 creating repository at "repo2"
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
226 recovering after interrupted transaction, if any
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
227 no interrupted transaction available
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
228 pulling from src
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
229 updating to revision 'default'
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
230 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
231 chainsaw-update to revision 'default' for repository at '$TESTTMP/repo2' done
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
232
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
233 $ cd repo2
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
234 $ hg log -G
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
235 @ changeset: 2:973ab81c95fb
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
236 | tag: tip
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
237 | user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
238 | date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
239 | summary: B_1
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
240 |
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
241 o changeset: 1:bfcb8e629987
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
242 | user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
243 | date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
244 | summary: B_0
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
245 |
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
246 o changeset: 0:06f48e4098b8
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
247 user: test
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
248 date: Thu Jan 01 00:00:00 1970 +0000
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
249 summary: R_0
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
250
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
251 $ hg status -A
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
252 C foo
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
253 C root
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
254 $ cat foo
d36a81d70f25 chainsaw-update: taking care of initial cloning
Georges Racinet <georges.racinet@octobus.net>
parents: 51432
diff changeset
255 2