annotate tests/test-dirstate-status-write-race.t @ 52285:94cf83d9a2c9

sslutil: drop support for Python prior to 3.7 There's also a block of code around line 47 related to `ssl.HAS_TLSv1` to determine the supported protocols that references "Python 3.7", but I'm not altering that because the commit referenced there wasn't landed until just prior to the 3.9 release, and I'm not sure what flavors of py38 might not have a backport. Avoid de-indenting for now for a clearer text diff.
author Matt Harbison <matt_harbison@yahoo.com>
date Fri, 08 Nov 2024 19:48:06 -0500
parents dbe09fb038fc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
50215
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
1 =====================================================================
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
2 Check potential race conditions between a status and other operations
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
3 =====================================================================
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
4
50223
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
5 #testcases dirstate-v1 dirstate-v2-append dirstate-v2-rewrite
50220
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
6
50215
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
7 The `hg status` command can run without the wlock, however it might end up
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
8 having to update the on-disk dirstate files, for example to mark ambiguous
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
9 files as clean, or to update directory caches information with dirstate-v2.
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
10
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
11
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
12 If another process updates the dirstate in the meantime we might run into
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
13 trouble. Especially, commands doing semantic changes like `hg add` or
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
14 `hg commit` should not see their update erased by a concurrent status.
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
15
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
16 Unlike commands like `add` or `commit`, `status` only writes the dirstate
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
17 to update caches, no actual information is lost if we fail to write to disk.
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
18
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
19
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
20 This test file is meant to test various cases where such parallel operations
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
21 between a status with reasons to update the dirstate and another semantic
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
22 changes happen.
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
23
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
24
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
25 Setup
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
26 =====
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
27
50220
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
28 $ cat >> $HGRCPATH << EOF
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
29 > [storage]
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
30 > dirstate-v2.slow-path=allow
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
31 > EOF
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
32
50223
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
33 #if no-dirstate-v1
50220
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
34 $ cat >> $HGRCPATH << EOF
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
35 > [format]
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
36 > use-dirstate-v2=yes
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
37 > EOF
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
38 #else
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
39 $ cat >> $HGRCPATH << EOF
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
40 > [format]
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
41 > use-dirstate-v2=no
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
42 > EOF
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
43 #endif
35ea3c139104 dirstate: cover each dirstate version when testing for status race
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50219
diff changeset
44
50223
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
45 #if dirstate-v2-rewrite
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
46 $ d2args="--config devel.dirstate.v2.data_update_mode=force-new"
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
47 #endif
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
48 #if dirstate-v2-append
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
49 $ d2args="--config devel.dirstate.v2.data_update_mode=force-append"
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
50 #endif
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
51
50215
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
52 $ directories="dir dir/nested dir2"
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
53 $ first_files="dir/nested/a dir/b dir/c dir/d dir2/e f"
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
54 $ second_files="g dir/nested/h dir/i dir/j dir2/k dir2/l dir/nested/m"
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
55 $ extra_files="dir/n dir/o p q"
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
56
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
57 $ hg init reference-repo
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
58 $ cd reference-repo
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
59 $ mkdir -p dir/nested dir2
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
60 $ touch -t 200001010000 $first_files $directories
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
61 $ hg commit -Aqm "recreate a bunch of files to facilitate dirstate-v2 append"
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
62 $ touch -t 200001010010 $second_files $directories
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
63 $ hg commit -Aqm "more files to have two commits"
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
64 $ hg log -G -v
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
65 @ changeset: 1:c349430a1631
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
66 | tag: tip
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
67 | user: test
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
68 | date: Thu Jan 01 00:00:00 1970 +0000
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
69 | files: dir/i dir/j dir/nested/h dir/nested/m dir2/k dir2/l g
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
70 | description:
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
71 | more files to have two commits
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
72 |
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
73 |
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
74 o changeset: 0:4f23db756b09
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
75 user: test
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
76 date: Thu Jan 01 00:00:00 1970 +0000
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
77 files: dir/b dir/c dir/d dir/nested/a dir2/e f
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
78 description:
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
79 recreate a bunch of files to facilitate dirstate-v2 append
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
80
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
81
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
82 $ hg manifest
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
83 dir/b
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
84 dir/c
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
85 dir/d
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
86 dir/i
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
87 dir/j
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
88 dir/nested/a
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
89 dir/nested/h
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
90 dir/nested/m
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
91 dir2/e
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
92 dir2/k
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
93 dir2/l
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
94 f
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
95 g
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
96
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
97 Add some unknown files and refresh the dirstate
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
98
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
99 $ touch -t 200001010020 $extra_files
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
100 $ hg add dir/o
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
101 $ hg remove dir/nested/m
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
102
50222
ecd28d89c29e dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents: 50220
diff changeset
103 $ hg st --config devel.dirstate.v2.data_update_mode=force-new
50215
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
104 A dir/o
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
105 R dir/nested/m
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
106 ? dir/n
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
107 ? p
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
108 ? q
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
109 $ hg debugstate
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
110 n 644 0 2000-01-01 00:00:00 dir/b
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
111 n 644 0 2000-01-01 00:00:00 dir/c
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
112 n 644 0 2000-01-01 00:00:00 dir/d
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
113 n 644 0 2000-01-01 00:10:00 dir/i
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
114 n 644 0 2000-01-01 00:10:00 dir/j
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
115 n 644 0 2000-01-01 00:00:00 dir/nested/a
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
116 n 644 0 2000-01-01 00:10:00 dir/nested/h
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
117 r ?????????????????????????????????? dir/nested/m (glob)
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
118 a ?????????????????????????????????? dir/o (glob)
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
119 n 644 0 2000-01-01 00:00:00 dir2/e
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
120 n 644 0 2000-01-01 00:10:00 dir2/k
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
121 n 644 0 2000-01-01 00:10:00 dir2/l
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
122 n 644 0 2000-01-01 00:00:00 f
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
123 n 644 0 2000-01-01 00:10:00 g
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
124 $ hg debugstate > ../reference
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
125 $ cd ..
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
126
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
127 Explain / verify the test principles
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
128 ------------------------------------
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
129
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
130 First, we can properly copy the reference
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
131
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
132 $ cp -a reference-repo sanity-check
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
133 $ cd sanity-check
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
134 $ hg debugstate
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
135 n 644 0 2000-01-01 00:00:00 dir/b
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
136 n 644 0 2000-01-01 00:00:00 dir/c
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
137 n 644 0 2000-01-01 00:00:00 dir/d
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
138 n 644 0 2000-01-01 00:10:00 dir/i
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
139 n 644 0 2000-01-01 00:10:00 dir/j
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
140 n 644 0 2000-01-01 00:00:00 dir/nested/a
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
141 n 644 0 2000-01-01 00:10:00 dir/nested/h
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
142 r ?????????????????????????????????? dir/nested/m (glob)
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
143 a ?????????????????????????????????? dir/o (glob)
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
144 n 644 0 2000-01-01 00:00:00 dir2/e
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
145 n 644 0 2000-01-01 00:10:00 dir2/k
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
146 n 644 0 2000-01-01 00:10:00 dir2/l
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
147 n 644 0 2000-01-01 00:00:00 f
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
148 n 644 0 2000-01-01 00:10:00 g
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
149 $ hg debugstate > ../post-copy
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
150 $ diff ../reference ../post-copy
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
151
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
152 And status thinks the cache is in a proper state
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
153
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
154 $ hg st
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
155 A dir/o
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
156 R dir/nested/m
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
157 ? dir/n
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
158 ? p
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
159 ? q
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
160 $ hg debugstate
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
161 n 644 0 2000-01-01 00:00:00 dir/b
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
162 n 644 0 2000-01-01 00:00:00 dir/c
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
163 n 644 0 2000-01-01 00:00:00 dir/d
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
164 n 644 0 2000-01-01 00:10:00 dir/i
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
165 n 644 0 2000-01-01 00:10:00 dir/j
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
166 n 644 0 2000-01-01 00:00:00 dir/nested/a
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
167 n 644 0 2000-01-01 00:10:00 dir/nested/h
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
168 r ?????????????????????????????????? dir/nested/m (glob)
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
169 a ?????????????????????????????????? dir/o (glob)
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
170 n 644 0 2000-01-01 00:00:00 dir2/e
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
171 n 644 0 2000-01-01 00:10:00 dir2/k
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
172 n 644 0 2000-01-01 00:10:00 dir2/l
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
173 n 644 0 2000-01-01 00:00:00 f
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
174 n 644 0 2000-01-01 00:10:00 g
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
175 $ hg debugstate > ../post-status
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
176 $ diff ../reference ../post-status
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
177
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
178 Then we can start a status that:
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
179 - has some update to do (the touch call)
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
180 - will wait AFTER running status, but before updating the cache on disk
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
181
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
182 $ touch -t 200001010001 dir/c
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
183 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
184 > --config rhg.on-unsupported=abort \
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
185 > --config devel.sync.status.pre-dirstate-write-file=$TESTTMP/status-race-lock \
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
186 > &
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
187 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
188
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
189 We check it runs the status first by modifying a file and updating another timestamp
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
190
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
191 $ touch -t 200001010003 dir/i
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
192 $ echo babar > dir/j
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
193 $ touch $TESTTMP/status-race-lock
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
194 $ wait
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
195
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
196 The test process should have reported a status before the change we made,
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
197 and should have missed the timestamp update
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
198
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
199 $ cat $TESTTMP/status-race-lock.out
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
200 A dir/o
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
201 R dir/nested/m
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
202 ? dir/n
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
203 ? p
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
204 ? q
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
205 $ cat $TESTTMP/status-race-lock.log
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
206 $ hg debugstate | grep dir/c
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
207 n 644 0 2000-01-01 00:01:00 dir/c
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
208 $ hg debugstate | grep dir/i
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
209 n 644 0 2000-01-01 00:10:00 dir/i
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
210 $ hg debugstate | grep dir/j
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
211 n 644 0 2000-01-01 00:10:00 dir/j
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
212
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
213 final cleanup
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
214
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
215 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting
ae61851e6fe2 dirstate: add a way to test races happening during status
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
216 $ cd ..
50216
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
217
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
218 Actual Testing
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
219 ==============
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
220
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
221 Race with a `hg add`
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
222 -------------------
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
223
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
224 $ cp -a reference-repo race-with-add
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
225 $ cd race-with-add
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
226
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
227 spin a `hg status` with some caches to update
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
228
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
229 $ touch -t 200001020001 f
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
230 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
231 > --config rhg.on-unsupported=abort \
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
232 > --config devel.sync.status.pre-dirstate-write-file=$TESTTMP/status-race-lock \
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
233 > &
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
234 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
235
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
236 Add a file
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
237
50223
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
238 $ hg $d2args add dir/n
50216
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
239 $ touch $TESTTMP/status-race-lock
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
240 $ wait
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
241
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
242 The file should in a "added" state
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
243
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
244 $ hg status
50245
dbe09fb038fc rhg: remember the inode of .hg/dirstate
Raphaël Gomès <rgomes@octobus.net>
parents: 50244
diff changeset
245 A dir/n
50216
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
246 A dir/o
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
247 R dir/nested/m
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
248 ? p
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
249 ? q
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
250
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
251 The status process should return a consistent result and not crash.
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
252
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
253 $ cat $TESTTMP/status-race-lock.out
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
254 A dir/o
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
255 R dir/nested/m
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
256 ? dir/n
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
257 ? p
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
258 ? q
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
259 $ cat $TESTTMP/status-race-lock.log
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
260
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
261 final cleanup
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
262
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
263 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting
02bf2f94a04c dirstate: test a `hg status` raced by a `hg add`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50215
diff changeset
264 $ cd ..
50217
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
265
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
266 Race with a `hg commit`
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
267 ----------------------
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
268
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
269 $ cp -a reference-repo race-with-commit
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
270 $ cd race-with-commit
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
271
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
272 spin a `hg status` with some caches to update
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
273
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
274 $ touch -t 200001020001 dir/j
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
275 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
276 > --config rhg.on-unsupported=abort \
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
277 > --config devel.sync.status.pre-dirstate-write-file=$TESTTMP/status-race-lock \
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
278 > &
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
279 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
280
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
281 Add a file and force the data file rewrite
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
282
50223
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
283 $ hg $d2args commit -m created-during-status dir/o
50217
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
284 $ touch $TESTTMP/status-race-lock
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
285 $ wait
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
286
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
287 The parent must change and the status should be clean
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
288
50244
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
289 $ hg summary
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
290 parent: 2:2e3b442a2fd4 tip
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
291 created-during-status
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
292 branch: default
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
293 commit: 1 removed, 3 unknown
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
294 update: (current)
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
295 phases: 3 draft
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
296 $ hg status
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
297 R dir/nested/m
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
298 ? dir/n
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
299 ? p
07d030b38097 rust-dirstate-v2: don't write dirstate if data file has changed
Raphaël Gomès <rgomes@octobus.net>
parents: 50225
diff changeset
300 ? q
50217
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
301
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
302 The status process should return a consistent result and not crash.
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
303
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
304 $ cat $TESTTMP/status-race-lock.out
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
305 A dir/o
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
306 R dir/nested/m
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
307 ? dir/n
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
308 ? p
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
309 ? q
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
310 $ cat $TESTTMP/status-race-lock.log
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
311
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
312 final cleanup
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
313
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
314 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
315 $ cd ..
718fcccae326 dirstate: test a `hg status` raced by a `hg commit`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50216
diff changeset
316
50218
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
317 Race with a `hg update`
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
318 ----------------------
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
319
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
320 $ cp -a reference-repo race-with-update
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
321 $ cd race-with-update
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
322
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
323 spin a `hg status` with some caches to update
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
324
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
325 $ touch -t 200001020001 dir2/k
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
326 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
327 > --config rhg.on-unsupported=abort \
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
328 > --config devel.sync.status.pre-dirstate-write-file=$TESTTMP/status-race-lock \
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
329 > &
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
330 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
331
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
332 Add a file and force the data file rewrite
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
333
50223
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
334 $ hg $d2args update ".~1"
50218
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
335 0 files updated, 0 files merged, 6 files removed, 0 files unresolved
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
336 $ touch $TESTTMP/status-race-lock
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
337 $ wait
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
338
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
339 The parent must change and the status should be clean
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
340
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
341 $ hg summary
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
342 parent: 0:4f23db756b09
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
343 recreate a bunch of files to facilitate dirstate-v2 append
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
344 branch: default
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
345 commit: 1 added, 3 unknown (new branch head)
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
346 update: 1 new changesets (update)
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
347 phases: 2 draft
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
348 $ hg status
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
349 A dir/o
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
350 ? dir/n
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
351 ? p
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
352 ? q
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
353
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
354 The status process should return a consistent result and not crash.
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
355
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
356 $ cat $TESTTMP/status-race-lock.out
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
357 A dir/o
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
358 R dir/nested/m
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
359 ? dir/n
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
360 ? p
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
361 ? q
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
362 $ cat $TESTTMP/status-race-lock.log
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
363
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
364 final cleanup
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
365
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
366 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting
ee75dd844ab6 dirstate: test a `hg status` raced by a `hg update`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50217
diff changeset
367 $ cd ..
50219
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
368
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
369 Race with another status
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
370 ------------------------
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
371
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
372 $ cp -a reference-repo race-with-status
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
373 $ cd race-with-status
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
374
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
375 spin a `hg status` with some caches to update
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
376
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
377 $ touch -t 200001010030 dir/nested/h
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
378 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
379 > --config rhg.on-unsupported=abort \
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
380 > --config devel.sync.status.pre-dirstate-write-file=$TESTTMP/status-race-lock \
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
381 > &
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
382 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
383
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
384 touch g
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
385
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
386 $ touch -t 200001010025 g
50223
3f34d800cc69 dirstate: tests racing status with both dirstate-v2 append and rewrite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50222
diff changeset
387 $ hg $d2args status
50219
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
388 A dir/o
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
389 R dir/nested/m
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
390 ? dir/n
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
391 ? p
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
392 ? q
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
393 $ touch $TESTTMP/status-race-lock
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
394 $ wait
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
395
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
396 the first update should be on disk
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
397
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
398 $ hg debugstate --all | grep "g"
50245
dbe09fb038fc rhg: remember the inode of .hg/dirstate
Raphaël Gomès <rgomes@octobus.net>
parents: 50244
diff changeset
399 n 644 0 2000-01-01 00:25:00 g
50219
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
400
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
401 The status process should return a consistent result and not crash.
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
402
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
403 $ cat $TESTTMP/status-race-lock.out
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
404 A dir/o
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
405 R dir/nested/m
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
406 ? dir/n
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
407 ? p
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
408 ? q
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
409 $ cat $TESTTMP/status-race-lock.log
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
410
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
411 final cleanup
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
412
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
413 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting
72104dd91f2b dirstate: test a `hg status` raced by another `hg status`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50218
diff changeset
414 $ cd ..
50224
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
415
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
416 Race with the removal of an ambiguous file
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
417 ----------------------รจ-------------------
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
418
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
419 $ cp -a reference-repo race-with-remove
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
420 $ cd race-with-remove
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
421
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
422 spin a `hg status` with some caches to update
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
423
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
424 $ touch -t 200001010035 dir2/l
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
425 $ hg st >$TESTTMP/status-race-lock.out 2>$TESTTMP/status-race-lock.log \
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
426 > --config rhg.on-unsupported=abort \
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
427 > --config devel.sync.status.pre-dirstate-write-file=$TESTTMP/status-race-lock \
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
428 > &
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
429 $ $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/status-race-lock.waiting
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
430
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
431 remove that same file
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
432
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
433 $ hg $d2args remove dir2/l
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
434 $ touch $TESTTMP/status-race-lock
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
435 $ wait
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
436
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
437 file should be marked as removed
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
438
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
439 $ hg status
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
440 A dir/o
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
441 R dir/nested/m
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
442 R dir2/l
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
443 ? dir/n
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
444 ? p
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
445 ? q
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
446
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
447 The status process should return a consistent result and not crash.
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
448
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
449 $ cat $TESTTMP/status-race-lock.out
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
450 A dir/o
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
451 R dir/nested/m
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
452 ? dir/n
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
453 ? p
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
454 ? q
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
455 $ cat $TESTTMP/status-race-lock.log
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
456
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
457 final cleanup
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
458
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
459 $ rm $TESTTMP/status-race-lock $TESTTMP/status-race-lock.waiting
e30b9e43be7e dirstate: test a `hg status` raced by a `hg remove`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50223
diff changeset
460 $ cd ..