Mercurial > hg
annotate tests/test-dirstate-race.t @ 44767:234882d17814 stable
packaging: support building WiX installers with PyOxidizer
We initially implemented PyOxidizer support for Inno installers.
That did most of the heavy work of integrating PyOxidizer into
the packaging system. Implementing WiX installer support was
pretty straightforward.
Aspects of this patch look very similar to Inno's.
The main difference is the handling of the Visual C++
Redistributable Runtime files.
The WiX installer was formerly using merge modules to
install the VC++ 9.0 runtime because this feature is
supported by the WiX installer (it isn't easily available
to Inno installers).
Our strategy for the runtime files is to install the
vcruntime140.dll file next to hg.exe just like any other
file. While we could leverage WiX's functionality for invoking
a VCRedist installer, I don't want to deal with the complexity
at this juncture. So, we let run_pyoxidizer() copy vcruntime140.dll
into the staging directory (like it does for Inno) and our
dynamic WiX XML generator picks it up as a regular file and
installs it.
We did, however, have to teach mercurial.wxs how to conditionally
use the merge modules. But this was rather straightforward.
Comparing the file layout of the WiX installers before and
after:
* Various lib/*.{pyd, dll} files no longer exist
* python27.dll was replaced by python37.dll
* vcruntime140.dll was added
All these changes are expected due to the transition to
Python 3 and to PyOxidizer, which embeded the .pyd and .dll files
in hg.exe.
Differential Revision: https://phab.mercurial-scm.org/D8477
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 20 Apr 2020 17:42:50 -0700 |
parents | 28a4fb793ba1 |
children | f90a5c211251 |
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 |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
33577
diff
changeset
|
48 adding dir1/c |
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 > ) |
41068
28a4fb793ba1
extensions: deprecate extsetup without a `ui` argument (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
40296
diff
changeset
|
56 > def extsetup(ui): |
32651
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 |
40296
e787d97e90ad
py3: fix test-dirstate-race.t
Mark Thomas <mbthomas@fb.com>
parents:
35393
diff
changeset
|
60 > self._repo.ui.system(br"sh '$TESTTMP/dirstaterace.sh'", |
32751
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 |
33577
34a8ef358c93
test-dirstate-race: hide irrelevant hg status output
Siddharth Agarwal <sid0@fb.com>
parents:
33139
diff
changeset
|
207 Configure a merge tool that runs status in the middle of the rebase. The goal of |
34a8ef358c93
test-dirstate-race: hide irrelevant hg status output
Siddharth Agarwal <sid0@fb.com>
parents:
33139
diff
changeset
|
208 the status call is to trigger a potential bug if fsmonitor's state is written |
34a8ef358c93
test-dirstate-race: hide irrelevant hg status output
Siddharth Agarwal <sid0@fb.com>
parents:
33139
diff
changeset
|
209 even though the wlock is held by another process. The output of 'hg status' in |
34a8ef358c93
test-dirstate-race: hide irrelevant hg status output
Siddharth Agarwal <sid0@fb.com>
parents:
33139
diff
changeset
|
210 the merge tool goes to /dev/null because we're more interested in the results of |
34a8ef358c93
test-dirstate-race: hide irrelevant hg status output
Siddharth Agarwal <sid0@fb.com>
parents:
33139
diff
changeset
|
211 'hg status' run after the rebase. |
32815
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
212 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
213 $ 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
|
214 > echo "custom merge tool" |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
215 > printf "c2\nc3\nc4\n" > \$1 |
33577
34a8ef358c93
test-dirstate-race: hide irrelevant hg status output
Siddharth Agarwal <sid0@fb.com>
parents:
33139
diff
changeset
|
216 > hg --cwd "$TESTTMP/repo" status > /dev/null |
32815
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
217 > 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
|
218 > EOF |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
219 $ cat >> $HGRCPATH << EOF |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
220 > [extensions] |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
221 > rebase = |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
222 > [merge-tools] |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
223 > test.executable=sh |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
224 > 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
|
225 > EOF |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
226 |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
227 $ 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
|
228 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
|
229 merging a |
15e85dded933
fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com>
parents:
32812
diff
changeset
|
230 custom merge tool |
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 |