Mercurial > hg
annotate tests/test-dirstate-race.t @ 33453:f6b7617a85bb
phases: add a 'registernew' method to set new phases
This new function will be used by code that adds new changesets. It ajusts the
phase boundary to make sure added changesets are at least in their target
phase (they end up in an higher phase if their parents are in a higher phase).
Having a dedicated function also simplify the phases tracking. All the new
nodes are passed as argument, so we know that all of them needs to have their
new phase registered. We also know that no other nodes will be affected, so no
extra computation are needed.
This function differ from 'retractboundary' where some nodes might change
phase while some other might not. It can also affect nodes not passed as
parameters.
These simplification also apply to the computation itself. For now we use
'_retractboundary' there by convenience, but we may introduces simpler code
later.
While registering new revisions, we still need to check the actual phases of
the added node because it might be higher than the target phase (eg: target is
draft but parent is secret).
We will migrate users over the next changesets.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Tue, 11 Jul 2017 03:47:25 +0200 |
parents | 40ee74bfa111 |
children | 34a8ef358c93 |
rev | line source |
---|---|
32651
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
1 $ hg init repo |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
2 $ cd repo |
12279 | 3 $ echo a > a |
4 $ hg add a | |
5 $ hg commit -m test | |
6 | |
7 Do we ever miss a sub-second change?: | |
6327
6d952dc2abc9
dirstate: refactor granularity code, add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
8 |
12279 | 9 $ for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do |
10 > hg co -qC 0 | |
11 > echo b > a | |
12 > hg st | |
13 > done | |
14 M a | |
15 M a | |
16 M a | |
17 M a | |
18 M a | |
19 M a | |
20 M a | |
21 M a | |
22 M a | |
23 M a | |
24 M a | |
25 M a | |
26 M a | |
27 M a | |
28 M a | |
29 M a | |
30 M a | |
31 M a | |
32 M a | |
33 M a | |
6327
6d952dc2abc9
dirstate: refactor granularity code, add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
34 |
32651
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
35 $ echo test > b |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
36 $ mkdir dir1 |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
37 $ echo test > dir1/c |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
38 $ echo test > d |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
39 |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
40 $ echo test > e |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
41 #if execbit |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
42 A directory will typically have the execute bit -- make sure it doesn't get |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
43 confused with a file with the exec bit set |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
44 $ chmod +x e |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
45 #endif |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
46 |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
47 $ hg add b dir1 d e |
32678
bcb6684d144b
tests: adjust recent output changes for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
32651
diff
changeset
|
48 adding dir1/c (glob) |
32651
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
49 $ hg commit -m test2 |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
50 |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
51 $ cat >> $TESTTMP/dirstaterace.py << EOF |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
52 > from mercurial import ( |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
53 > context, |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
54 > extensions, |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
55 > ) |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
56 > def extsetup(): |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
57 > extensions.wrapfunction(context.workingctx, '_checklookup', overridechecklookup) |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
58 > def overridechecklookup(orig, self, files): |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
59 > # make an update that changes the dirstate from underneath |
32751
627eaab1ad07
tests: factor external procedures out for portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32678
diff
changeset
|
60 > self._repo.ui.system(r"sh '$TESTTMP/dirstaterace.sh'", |
627eaab1ad07
tests: factor external procedures out for portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32678
diff
changeset
|
61 > cwd=self._repo.root) |
32651
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
62 > return orig(self, files) |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
63 > EOF |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
64 |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
65 $ hg debugrebuilddirstate |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
66 $ hg debugdirstate |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
67 n 0 -1 unset a |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
68 n 0 -1 unset b |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
69 n 0 -1 unset d |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
70 n 0 -1 unset dir1/c |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
71 n 0 -1 unset e |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
72 |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
73 XXX Note that this returns M for files that got replaced by directories. This is |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
74 definitely a bug, but the fix for that is hard and the next status run is fine |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
75 anyway. |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
76 |
32751
627eaab1ad07
tests: factor external procedures out for portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32678
diff
changeset
|
77 $ cat > $TESTTMP/dirstaterace.sh <<EOF |
627eaab1ad07
tests: factor external procedures out for portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32678
diff
changeset
|
78 > rm b && rm -r dir1 && rm d && mkdir d && rm e && mkdir e |
627eaab1ad07
tests: factor external procedures out for portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32678
diff
changeset
|
79 > EOF |
627eaab1ad07
tests: factor external procedures out for portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32678
diff
changeset
|
80 |
627eaab1ad07
tests: factor external procedures out for portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32678
diff
changeset
|
81 $ hg status --config extensions.dirstaterace=$TESTTMP/dirstaterace.py |
32651
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
82 M d |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
83 M e |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
84 ! b |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
85 ! dir1/c |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
86 $ hg debugdirstate |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
87 n 644 2 * a (glob) |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
88 n 0 -1 unset b |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
89 n 0 -1 unset d |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
90 n 0 -1 unset dir1/c |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
91 n 0 -1 unset e |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
92 |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
93 $ hg status |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
94 ! b |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
95 ! d |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
96 ! dir1/c |
c850f0ed54c1
status: don't crash if a lookup file disappears
Siddharth Agarwal <sid0@fb.com>
parents:
12279
diff
changeset
|
97 ! e |
32752
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
98 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
99 $ rmdir d e |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
100 $ hg update -C -q . |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
101 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
102 Test that dirstate changes aren't written out at the end of "hg |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
103 status", if .hg/dirstate is already changed simultaneously before |
32812
add613cddcb6
workingctx: factor out post-status dirstate fixup
Siddharth Agarwal <sid0@fb.com>
parents:
32802
diff
changeset
|
104 acquisition of wlock in workingctx._poststatusfixup(). |
32752
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
105 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
106 This avoidance is important to keep consistency of dirstate in race |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
107 condition (see issue5584 for detail). |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
108 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
109 $ hg parents -q |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
110 1:* (glob) |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
111 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
112 $ hg debugrebuilddirstate |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
113 $ hg debugdirstate |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
114 n 0 -1 unset a |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
115 n 0 -1 unset b |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
116 n 0 -1 unset d |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
117 n 0 -1 unset dir1/c |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
118 n 0 -1 unset e |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
119 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
120 $ cat > $TESTTMP/dirstaterace.sh <<EOF |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
121 > # This script assumes timetable of typical issue5584 case below: |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
122 > # |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
123 > # 1. "hg status" loads .hg/dirstate |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
124 > # 2. "hg status" confirms clean-ness of FILE |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
125 > # 3. "hg update -C 0" updates the working directory simultaneously |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
126 > # (FILE is removed, and FILE is dropped from .hg/dirstate) |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
127 > # 4. "hg status" acquires wlock |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
128 > # (.hg/dirstate is re-loaded = no FILE entry in dirstate) |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
129 > # 5. "hg status" marks FILE in dirstate as clean |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
130 > # (FILE entry is added to in-memory dirstate) |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
131 > # 6. "hg status" writes dirstate changes into .hg/dirstate |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
132 > # (FILE entry is written into .hg/dirstate) |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
133 > # |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
134 > # To reproduce similar situation easily and certainly, #2 and #3 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
135 > # are swapped. "hg cat" below ensures #2 on "hg status" side. |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
136 > |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
137 > hg update -q -C 0 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
138 > hg cat -r 1 b > b |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
139 > EOF |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
140 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
141 "hg status" below should excludes "e", of which exec flag is set, for |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
142 portability of test scenario, because unsure but missing "e" is |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
143 treated differently in _checklookup() according to runtime platform. |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
144 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
145 - "missing(!)" on POSIX, "pctx[f].cmp(self[f])" raises ENOENT |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
146 - "modified(M)" on Windows, "self.flags(f) != pctx.flags(f)" is True |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
147 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
148 $ hg status --config extensions.dirstaterace=$TESTTMP/dirstaterace.py --debug -X path:e |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
149 skip updating dirstate: identity mismatch |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
150 M a |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
151 ! d |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
152 ! dir1/c |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
153 |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
154 $ hg parents -q |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
155 0:* (glob) |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
156 $ hg files |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
157 a |
dc7efa2826e4
context: avoid writing outdated dirstate out (issue5584)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32751
diff
changeset
|
158 $ hg debugdirstate |
32802
f40eec7af044
test-dirstate-race: back out changeset c82fa7efcbc8
Siddharth Agarwal <sid0@fb.com>
parents:
32771
diff
changeset
|
159 n * * * a (glob) |
32815
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
160 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
161 $ rm b |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
162 |
32816
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
163 #if fsmonitor |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
164 |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
165 Create fsmonitor state. |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
166 |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
167 $ hg status |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
168 $ f --type .hg/fsmonitor.state |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
169 .hg/fsmonitor.state: file |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
170 |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
171 Test that invalidating fsmonitor state in the middle (which doesn't require the |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
172 wlock) causes the fsmonitor update to be skipped. |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
173 hg debugrebuilddirstate ensures that the dirstaterace hook will be called, but |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
174 it also invalidates the fsmonitor state. So back it up and restore it. |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
175 |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
176 $ mv .hg/fsmonitor.state .hg/fsmonitor.state.tmp |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
177 $ hg debugrebuilddirstate |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
178 $ mv .hg/fsmonitor.state.tmp .hg/fsmonitor.state |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
179 |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
180 $ cat > $TESTTMP/dirstaterace.sh <<EOF |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
181 > rm .hg/fsmonitor.state |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
182 > EOF |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
183 |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
184 $ hg status --config extensions.dirstaterace=$TESTTMP/dirstaterace.py --debug |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
185 skip updating fsmonitor.state: identity mismatch |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
186 $ f .hg/fsmonitor.state |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
187 .hg/fsmonitor.state: file not found |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
188 |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
189 #endif |
1b25c648d5b7
fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32815
diff
changeset
|
190 |
32815
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
191 Set up a rebase situation for issue5581. |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
192 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
193 $ echo c2 > a |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
194 $ echo c2 > b |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
195 $ hg add b |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
196 $ hg commit -m c2 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
197 created new head |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
198 $ echo c3 >> a |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
199 $ hg commit -m c3 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
200 $ hg update 2 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
201 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
202 $ echo c4 >> a |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
203 $ echo c4 >> b |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
204 $ hg commit -m c4 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
205 created new head |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
206 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
207 Configure a merge tool that runs status in the middle of the rebase. |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
208 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
209 $ cat >> $TESTTMP/mergetool-race.sh << EOF |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
210 > echo "custom merge tool" |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
211 > printf "c2\nc3\nc4\n" > \$1 |
32836
29558247b00e
test-dirstate-race: stabilize for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
32816
diff
changeset
|
212 > hg --cwd "$TESTTMP/repo" status |
32815
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
213 > echo "custom merge tool end" |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
214 > EOF |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
215 $ cat >> $HGRCPATH << EOF |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
216 > [extensions] |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
217 > rebase = |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
218 > [merge-tools] |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
219 > test.executable=sh |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
220 > test.args=$TESTTMP/mergetool-race.sh \$output |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
221 > EOF |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
222 |
33139
40ee74bfa111
merge with stable
Martin von Zweigbergk <martinvonz@google.com>
parents:
32836
diff
changeset
|
223 BROKEN: the "M b" line should not be there |
32815
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
224 $ hg rebase -s . -d 3 --tool test |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
225 rebasing 4:b08445fd6b2a "c4" (tip) |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
226 merging a |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
227 custom merge tool |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
228 M a |
33139
40ee74bfa111
merge with stable
Martin von Zweigbergk <martinvonz@google.com>
parents:
32836
diff
changeset
|
229 M b |
32815
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
230 ? a.orig |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
231 custom merge tool end |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
232 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/* (glob) |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
233 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
234 This hg status should be empty, whether or not fsmonitor is enabled (issue5581). |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
235 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
236 $ hg status |