##// END OF EJS Templates
tests: stabilize test-extdiff.t on Windows...
Matt Harbison -
r41757:67e622ad default
parent child Browse files
Show More
@@ -1,521 +1,517
1 $ echo "[extensions]" >> $HGRCPATH
1 $ echo "[extensions]" >> $HGRCPATH
2 $ echo "extdiff=" >> $HGRCPATH
2 $ echo "extdiff=" >> $HGRCPATH
3
3
4 $ hg init a
4 $ hg init a
5 $ cd a
5 $ cd a
6 $ echo a > a
6 $ echo a > a
7 $ echo b > b
7 $ echo b > b
8 $ hg add
8 $ hg add
9 adding a
9 adding a
10 adding b
10 adding b
11
11
12 Should diff cloned directories:
12 Should diff cloned directories:
13
13
14 $ hg extdiff -o -r $opt
14 $ hg extdiff -o -r $opt
15 Only in a: a
15 Only in a: a
16 Only in a: b
16 Only in a: b
17 [1]
17 [1]
18
18
19 $ cat <<EOF >> $HGRCPATH
19 $ cat <<EOF >> $HGRCPATH
20 > [extdiff]
20 > [extdiff]
21 > cmd.falabala = echo
21 > cmd.falabala = echo
22 > opts.falabala = diffing
22 > opts.falabala = diffing
23 > cmd.edspace = echo
23 > cmd.edspace = echo
24 > opts.edspace = "name <user@example.com>"
24 > opts.edspace = "name <user@example.com>"
25 > alabalaf =
25 > alabalaf =
26 > [merge-tools]
26 > [merge-tools]
27 > alabalaf.executable = echo
27 > alabalaf.executable = echo
28 > alabalaf.diffargs = diffing
28 > alabalaf.diffargs = diffing
29 > EOF
29 > EOF
30
30
31 $ hg falabala
31 $ hg falabala
32 diffing a.000000000000 a
32 diffing a.000000000000 a
33 [1]
33 [1]
34
34
35 $ hg help falabala
35 $ hg help falabala
36 hg falabala [OPTION]... [FILE]...
36 hg falabala [OPTION]... [FILE]...
37
37
38 use external program to diff repository (or selected files)
38 use external program to diff repository (or selected files)
39
39
40 Show differences between revisions for the specified files, using the
40 Show differences between revisions for the specified files, using the
41 following program:
41 following program:
42
42
43 'echo'
43 'echo'
44
44
45 When two revision arguments are given, then changes are shown between
45 When two revision arguments are given, then changes are shown between
46 those revisions. If only one revision is specified then that revision is
46 those revisions. If only one revision is specified then that revision is
47 compared to the working directory, and, when no revisions are specified,
47 compared to the working directory, and, when no revisions are specified,
48 the working directory files are compared to its parent.
48 the working directory files are compared to its parent.
49
49
50 options ([+] can be repeated):
50 options ([+] can be repeated):
51
51
52 -o --option OPT [+] pass option to comparison program
52 -o --option OPT [+] pass option to comparison program
53 -r --rev REV [+] revision
53 -r --rev REV [+] revision
54 -c --change REV change made by revision
54 -c --change REV change made by revision
55 --per-file compare each file instead of revision snapshots
55 --per-file compare each file instead of revision snapshots
56 --confirm prompt user before each external program invocation
56 --confirm prompt user before each external program invocation
57 --patch compare patches for two revisions
57 --patch compare patches for two revisions
58 -I --include PATTERN [+] include names matching the given patterns
58 -I --include PATTERN [+] include names matching the given patterns
59 -X --exclude PATTERN [+] exclude names matching the given patterns
59 -X --exclude PATTERN [+] exclude names matching the given patterns
60 -S --subrepos recurse into subrepositories
60 -S --subrepos recurse into subrepositories
61
61
62 (some details hidden, use --verbose to show complete help)
62 (some details hidden, use --verbose to show complete help)
63
63
64 $ hg ci -d '0 0' -mtest1
64 $ hg ci -d '0 0' -mtest1
65
65
66 $ echo b >> a
66 $ echo b >> a
67 $ hg ci -d '1 0' -mtest2
67 $ hg ci -d '1 0' -mtest2
68
68
69 Should diff cloned files directly:
69 Should diff cloned files directly:
70
70
71 $ hg falabala -r 0:1
71 $ hg falabala -r 0:1
72 diffing "*\\extdiff.*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
72 diffing "*\\extdiff.*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
73 diffing */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
73 diffing */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
74 [1]
74 [1]
75
75
76 Specifying an empty revision should abort.
76 Specifying an empty revision should abort.
77
77
78 $ hg extdiff -p diff --patch --rev 'ancestor()' --rev 1
78 $ hg extdiff -p diff --patch --rev 'ancestor()' --rev 1
79 abort: empty revision on one side of range
79 abort: empty revision on one side of range
80 [255]
80 [255]
81
81
82 Test diff during merge:
82 Test diff during merge:
83
83
84 $ hg update -C 0
84 $ hg update -C 0
85 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
85 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
86 $ echo c >> c
86 $ echo c >> c
87 $ hg add c
87 $ hg add c
88 $ hg ci -m "new branch" -d '1 0'
88 $ hg ci -m "new branch" -d '1 0'
89 created new head
89 created new head
90 $ hg merge 1
90 $ hg merge 1
91 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
91 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
92 (branch merge, don't forget to commit)
92 (branch merge, don't forget to commit)
93
93
94 Should diff cloned file against wc file:
94 Should diff cloned file against wc file:
95
95
96 $ hg falabala
96 $ hg falabala
97 diffing "*\\extdiff.*\\a.2a13a4d2da36\\a" "*\\a\\a" (glob) (windows !)
97 diffing "*\\extdiff.*\\a.2a13a4d2da36\\a" "*\\a\\a" (glob) (windows !)
98 diffing */extdiff.*/a.2a13a4d2da36/a */a/a (glob) (no-windows !)
98 diffing */extdiff.*/a.2a13a4d2da36/a */a/a (glob) (no-windows !)
99 [1]
99 [1]
100
100
101
101
102 Test --change option:
102 Test --change option:
103
103
104 $ hg ci -d '2 0' -mtest3
104 $ hg ci -d '2 0' -mtest3
105
105
106 $ hg falabala -c 1
106 $ hg falabala -c 1
107 diffing "*\\extdiff.*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
107 diffing "*\\extdiff.*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
108 diffing */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
108 diffing */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
109 [1]
109 [1]
110
110
111 Check diff are made from the first parent:
111 Check diff are made from the first parent:
112
112
113 $ hg falabala -c 3 || echo "diff-like tools yield a non-zero exit code"
113 $ hg falabala -c 3 || echo "diff-like tools yield a non-zero exit code"
114 diffing "*\\extdiff.*\\a.2a13a4d2da36\\a" "a.46c0e4daeb72\\a" (glob) (windows !)
114 diffing "*\\extdiff.*\\a.2a13a4d2da36\\a" "a.46c0e4daeb72\\a" (glob) (windows !)
115 diffing */extdiff.*/a.2a13a4d2da36/a a.46c0e4daeb72/a (glob) (no-windows !)
115 diffing */extdiff.*/a.2a13a4d2da36/a a.46c0e4daeb72/a (glob) (no-windows !)
116 diff-like tools yield a non-zero exit code
116 diff-like tools yield a non-zero exit code
117
117
118 issue3153: ensure using extdiff with removed subrepos doesn't crash:
118 issue3153: ensure using extdiff with removed subrepos doesn't crash:
119
119
120 $ hg init suba
120 $ hg init suba
121 $ cd suba
121 $ cd suba
122 $ echo suba > suba
122 $ echo suba > suba
123 $ hg add
123 $ hg add
124 adding suba
124 adding suba
125 $ hg ci -m "adding suba file"
125 $ hg ci -m "adding suba file"
126 $ cd ..
126 $ cd ..
127 $ echo suba=suba > .hgsub
127 $ echo suba=suba > .hgsub
128 $ hg add
128 $ hg add
129 adding .hgsub
129 adding .hgsub
130 $ hg ci -Sm "adding subrepo"
130 $ hg ci -Sm "adding subrepo"
131 $ echo > .hgsub
131 $ echo > .hgsub
132 $ hg ci -m "removing subrepo"
132 $ hg ci -m "removing subrepo"
133 $ hg falabala -r 4 -r 5 -S
133 $ hg falabala -r 4 -r 5 -S
134 diffing a.398e36faf9c6 a.5ab95fb166c4
134 diffing a.398e36faf9c6 a.5ab95fb166c4
135 [1]
135 [1]
136
136
137 Test --per-file option:
137 Test --per-file option:
138
138
139 $ hg up -q -C 3
139 $ hg up -q -C 3
140 $ echo a2 > a
140 $ echo a2 > a
141 $ echo b2 > b
141 $ echo b2 > b
142 $ hg ci -d '3 0' -mtestmode1
142 $ hg ci -d '3 0' -mtestmode1
143 created new head
143 created new head
144 $ hg falabala -c 6 --per-file
144 $ hg falabala -c 6 --per-file
145 diffing "*\\extdiff.*\\a.46c0e4daeb72\\a" "a.81906f2b98ac\\a" (glob) (windows !)
145 diffing "*\\extdiff.*\\a.46c0e4daeb72\\a" "a.81906f2b98ac\\a" (glob) (windows !)
146 diffing */extdiff.*/a.46c0e4daeb72/a a.81906f2b98ac/a (glob) (no-windows !)
146 diffing */extdiff.*/a.46c0e4daeb72/a a.81906f2b98ac/a (glob) (no-windows !)
147 diffing "*\\extdiff.*\\a.46c0e4daeb72\\b" "a.81906f2b98ac\\b" (glob) (windows !)
147 diffing "*\\extdiff.*\\a.46c0e4daeb72\\b" "a.81906f2b98ac\\b" (glob) (windows !)
148 diffing */extdiff.*/a.46c0e4daeb72/b a.81906f2b98ac/b (glob) (no-windows !)
148 diffing */extdiff.*/a.46c0e4daeb72/b a.81906f2b98ac/b (glob) (no-windows !)
149 [1]
149 [1]
150
150
151 Test --per-file option for gui tool:
151 Test --per-file option for gui tool:
152
152
153 $ hg --config extdiff.gui.alabalaf=True alabalaf -c 6 --per-file --debug
153 $ hg --config extdiff.gui.alabalaf=True alabalaf -c 6 --per-file --debug
154 diffing "*\\extdiff.*\\a.46c0e4daeb72\\a" "a.81906f2b98ac\\a" (glob) (windows !)
154 diffing */extdiff.*/a.46c0e4daeb72/a a.81906f2b98ac/a (glob)
155 diffing */extdiff.*/a.46c0e4daeb72/a a.81906f2b98ac/a (glob) (no-windows !)
155 diffing */extdiff.*/a.46c0e4daeb72/b a.81906f2b98ac/b (glob)
156 diffing "*\\extdiff.*\\a.46c0e4daeb72\\b" "a.81906f2b98ac\\b" (glob) (windows !)
157 diffing */extdiff.*/a.46c0e4daeb72/b a.81906f2b98ac/b (glob) (no-windows !)
158 making snapshot of 2 files from rev 46c0e4daeb72
156 making snapshot of 2 files from rev 46c0e4daeb72
159 a
157 a
160 b
158 b
161 making snapshot of 2 files from rev 81906f2b98ac
159 making snapshot of 2 files from rev 81906f2b98ac
162 a
160 a
163 b
161 b
164 running '* diffing * *' in * (backgrounded) (glob)
162 running '* diffing * *' in * (backgrounded) (glob)
165 running '* diffing * *' in * (backgrounded) (glob)
163 running '* diffing * *' in * (backgrounded) (glob)
166 cleaning up temp directory
164 cleaning up temp directory
167 [1]
165 [1]
168
166
169 Test --per-file option for gui tool again:
167 Test --per-file option for gui tool again:
170
168
171 $ hg --config merge-tools.alabalaf.gui=True alabalaf -c 6 --per-file --debug
169 $ hg --config merge-tools.alabalaf.gui=True alabalaf -c 6 --per-file --debug
172 diffing "*\\extdiff.*\\a.46c0e4daeb72\\a" "a.81906f2b98ac\\a" (glob) (windows !)
170 diffing */extdiff.*/a.46c0e4daeb72/a a.81906f2b98ac/a (glob)
173 diffing */extdiff.*/a.46c0e4daeb72/a a.81906f2b98ac/a (glob) (no-windows !)
171 diffing */extdiff.*/a.46c0e4daeb72/b a.81906f2b98ac/b (glob)
174 diffing "*\\extdiff.*\\a.46c0e4daeb72\\b" "a.81906f2b98ac\\b" (glob) (windows !)
175 diffing */extdiff.*/a.46c0e4daeb72/b a.81906f2b98ac/b (glob) (no-windows !)
176 making snapshot of 2 files from rev 46c0e4daeb72
172 making snapshot of 2 files from rev 46c0e4daeb72
177 a
173 a
178 b
174 b
179 making snapshot of 2 files from rev 81906f2b98ac
175 making snapshot of 2 files from rev 81906f2b98ac
180 a
176 a
181 b
177 b
182 running '* diffing * *' in * (backgrounded) (glob)
178 running '* diffing * *' in * (backgrounded) (glob)
183 running '* diffing * *' in * (backgrounded) (glob)
179 running '* diffing * *' in * (backgrounded) (glob)
184 cleaning up temp directory
180 cleaning up temp directory
185 [1]
181 [1]
186
182
187 Test --per-file and --confirm options:
183 Test --per-file and --confirm options:
188
184
189 $ hg --config ui.interactive=True falabala -c 6 --per-file --confirm <<EOF
185 $ hg --config ui.interactive=True falabala -c 6 --per-file --confirm <<EOF
190 > n
186 > n
191 > y
187 > y
192 > EOF
188 > EOF
193 diff a (1 of 2) [Yns?] n
189 diff a (1 of 2) [Yns?] n
194 diff b (2 of 2) [Yns?] y
190 diff b (2 of 2) [Yns?] y
195 diffing "*\\extdiff.*\\a.46c0e4daeb72\\b" "a.81906f2b98ac\\b" (glob) (windows !)
191 diffing "*\\extdiff.*\\a.46c0e4daeb72\\b" "a.81906f2b98ac\\b" (glob) (windows !)
196 diffing */extdiff.*/a.46c0e4daeb72/b a.81906f2b98ac/b (glob) (no-windows !)
192 diffing */extdiff.*/a.46c0e4daeb72/b a.81906f2b98ac/b (glob) (no-windows !)
197 [1]
193 [1]
198
194
199 Test --per-file and --confirm options with skipping:
195 Test --per-file and --confirm options with skipping:
200
196
201 $ hg --config ui.interactive=True falabala -c 6 --per-file --confirm <<EOF
197 $ hg --config ui.interactive=True falabala -c 6 --per-file --confirm <<EOF
202 > s
198 > s
203 > EOF
199 > EOF
204 diff a (1 of 2) [Yns?] s
200 diff a (1 of 2) [Yns?] s
205 [1]
201 [1]
206
202
207 issue4463: usage of command line configuration without additional quoting
203 issue4463: usage of command line configuration without additional quoting
208
204
209 $ cat <<EOF >> $HGRCPATH
205 $ cat <<EOF >> $HGRCPATH
210 > [extdiff]
206 > [extdiff]
211 > cmd.4463a = echo
207 > cmd.4463a = echo
212 > opts.4463a = a-naked 'single quoted' "double quoted"
208 > opts.4463a = a-naked 'single quoted' "double quoted"
213 > 4463b = echo b-naked 'single quoted' "double quoted"
209 > 4463b = echo b-naked 'single quoted' "double quoted"
214 > echo =
210 > echo =
215 > EOF
211 > EOF
216 $ hg update -q -C 0
212 $ hg update -q -C 0
217 $ echo a >> a
213 $ echo a >> a
218
214
219 $ hg --debug 4463a | grep '^running'
215 $ hg --debug 4463a | grep '^running'
220 running 'echo a-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
216 running 'echo a-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
221 running 'echo a-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
217 running 'echo a-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
222 $ hg --debug 4463b | grep '^running'
218 $ hg --debug 4463b | grep '^running'
223 running 'echo b-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
219 running 'echo b-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
224 running 'echo b-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
220 running 'echo b-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
225 $ hg --debug echo | grep '^running'
221 $ hg --debug echo | grep '^running'
226 running '*echo* "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
222 running '*echo* "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
227 running '*echo */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
223 running '*echo */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
228
224
229 (getting options from other than extdiff section)
225 (getting options from other than extdiff section)
230
226
231 $ cat <<EOF >> $HGRCPATH
227 $ cat <<EOF >> $HGRCPATH
232 > [extdiff]
228 > [extdiff]
233 > # using diff-tools diffargs
229 > # using diff-tools diffargs
234 > 4463b2 = echo
230 > 4463b2 = echo
235 > # using merge-tools diffargs
231 > # using merge-tools diffargs
236 > 4463b3 = echo
232 > 4463b3 = echo
237 > # no diffargs
233 > # no diffargs
238 > 4463b4 = echo
234 > 4463b4 = echo
239 > [diff-tools]
235 > [diff-tools]
240 > 4463b2.diffargs = b2-naked 'single quoted' "double quoted"
236 > 4463b2.diffargs = b2-naked 'single quoted' "double quoted"
241 > [merge-tools]
237 > [merge-tools]
242 > 4463b3.diffargs = b3-naked 'single quoted' "double quoted"
238 > 4463b3.diffargs = b3-naked 'single quoted' "double quoted"
243 > EOF
239 > EOF
244
240
245 $ hg --debug 4463b2 | grep '^running'
241 $ hg --debug 4463b2 | grep '^running'
246 running 'echo b2-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
242 running 'echo b2-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
247 running 'echo b2-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
243 running 'echo b2-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
248 $ hg --debug 4463b3 | grep '^running'
244 $ hg --debug 4463b3 | grep '^running'
249 running 'echo b3-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
245 running 'echo b3-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
250 running 'echo b3-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
246 running 'echo b3-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
251 $ hg --debug 4463b4 | grep '^running'
247 $ hg --debug 4463b4 | grep '^running'
252 running 'echo "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
248 running 'echo "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
253 running 'echo */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
249 running 'echo */a $TESTTMP/a/a' in */extdiff.* (glob) (no-windows !)
254 $ hg --debug 4463b4 --option b4-naked --option 'being quoted' | grep '^running'
250 $ hg --debug 4463b4 --option b4-naked --option 'being quoted' | grep '^running'
255 running 'echo b4-naked "being quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
251 running 'echo b4-naked "being quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
256 running "echo b4-naked 'being quoted' */a $TESTTMP/a/a" in */extdiff.* (glob) (no-windows !)
252 running "echo b4-naked 'being quoted' */a $TESTTMP/a/a" in */extdiff.* (glob) (no-windows !)
257 $ hg --debug extdiff -p echo --option echo-naked --option 'being quoted' | grep '^running'
253 $ hg --debug extdiff -p echo --option echo-naked --option 'being quoted' | grep '^running'
258 running 'echo echo-naked "being quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
254 running 'echo echo-naked "being quoted" "*\\a" "*\\a"' in */extdiff.* (glob) (windows !)
259 running "echo echo-naked 'being quoted' */a $TESTTMP/a/a" in */extdiff.* (glob) (no-windows !)
255 running "echo echo-naked 'being quoted' */a $TESTTMP/a/a" in */extdiff.* (glob) (no-windows !)
260
256
261 $ touch 'sp ace'
257 $ touch 'sp ace'
262 $ hg add 'sp ace'
258 $ hg add 'sp ace'
263 $ hg ci -m 'sp ace'
259 $ hg ci -m 'sp ace'
264 created new head
260 created new head
265 $ echo > 'sp ace'
261 $ echo > 'sp ace'
266
262
267 Test pre-72a89cf86fcd backward compatibility with half-baked manual quoting
263 Test pre-72a89cf86fcd backward compatibility with half-baked manual quoting
268
264
269 $ cat <<EOF >> $HGRCPATH
265 $ cat <<EOF >> $HGRCPATH
270 > [extdiff]
266 > [extdiff]
271 > odd =
267 > odd =
272 > [merge-tools]
268 > [merge-tools]
273 > odd.diffargs = --foo='\$clabel' '\$clabel' "--bar=\$clabel" "\$clabel"
269 > odd.diffargs = --foo='\$clabel' '\$clabel' "--bar=\$clabel" "\$clabel"
274 > odd.executable = echo
270 > odd.executable = echo
275 > EOF
271 > EOF
276
272
277 $ hg --debug odd | grep '^running'
273 $ hg --debug odd | grep '^running'
278 running '"*\\echo.exe" --foo="sp ace" "sp ace" --bar="sp ace" "sp ace"' in * (glob) (windows !)
274 running '"*\\echo.exe" --foo="sp ace" "sp ace" --bar="sp ace" "sp ace"' in * (glob) (windows !)
279 running "*/echo --foo='sp ace' 'sp ace' --bar='sp ace' 'sp ace'" in * (glob) (no-windows !)
275 running "*/echo --foo='sp ace' 'sp ace' --bar='sp ace' 'sp ace'" in * (glob) (no-windows !)
280
276
281 Empty argument must be quoted
277 Empty argument must be quoted
282
278
283 $ cat <<EOF >> $HGRCPATH
279 $ cat <<EOF >> $HGRCPATH
284 > [extdiff]
280 > [extdiff]
285 > kdiff3 = echo
281 > kdiff3 = echo
286 > [merge-tools]
282 > [merge-tools]
287 > kdiff3.diffargs=--L1 \$plabel1 --L2 \$clabel \$parent \$child
283 > kdiff3.diffargs=--L1 \$plabel1 --L2 \$clabel \$parent \$child
288 > EOF
284 > EOF
289
285
290 $ hg --debug kdiff3 -r0 | grep '^running'
286 $ hg --debug kdiff3 -r0 | grep '^running'
291 running 'echo --L1 "@0" --L2 "" a.8a5febb7f867 a' in * (glob) (windows !)
287 running 'echo --L1 "@0" --L2 "" a.8a5febb7f867 a' in * (glob) (windows !)
292 running "echo --L1 '@0' --L2 '' a.8a5febb7f867 a" in * (glob) (no-windows !)
288 running "echo --L1 '@0' --L2 '' a.8a5febb7f867 a" in * (glob) (no-windows !)
293
289
294
290
295 Test extdiff of multiple files in tmp dir:
291 Test extdiff of multiple files in tmp dir:
296
292
297 $ hg update -C 0 > /dev/null
293 $ hg update -C 0 > /dev/null
298 $ echo changed > a
294 $ echo changed > a
299 $ echo changed > b
295 $ echo changed > b
300 #if execbit
296 #if execbit
301 $ chmod +x b
297 $ chmod +x b
302 #endif
298 #endif
303
299
304 Diff in working directory, before:
300 Diff in working directory, before:
305
301
306 $ hg diff --git
302 $ hg diff --git
307 diff --git a/a b/a
303 diff --git a/a b/a
308 --- a/a
304 --- a/a
309 +++ b/a
305 +++ b/a
310 @@ -1,1 +1,1 @@
306 @@ -1,1 +1,1 @@
311 -a
307 -a
312 +changed
308 +changed
313 diff --git a/b b/b
309 diff --git a/b b/b
314 old mode 100644 (execbit !)
310 old mode 100644 (execbit !)
315 new mode 100755 (execbit !)
311 new mode 100755 (execbit !)
316 --- a/b
312 --- a/b
317 +++ b/b
313 +++ b/b
318 @@ -1,1 +1,1 @@
314 @@ -1,1 +1,1 @@
319 -b
315 -b
320 +changed
316 +changed
321
317
322
318
323 Edit with extdiff -p:
319 Edit with extdiff -p:
324
320
325 Prepare custom diff/edit tool:
321 Prepare custom diff/edit tool:
326
322
327 $ cat > 'diff tool.py' << EOT
323 $ cat > 'diff tool.py' << EOT
328 > #!$PYTHON
324 > #!$PYTHON
329 > import time
325 > import time
330 > time.sleep(1) # avoid unchanged-timestamp problems
326 > time.sleep(1) # avoid unchanged-timestamp problems
331 > open('a/a', 'ab').write(b'edited\n')
327 > open('a/a', 'ab').write(b'edited\n')
332 > open('a/b', 'ab').write(b'edited\n')
328 > open('a/b', 'ab').write(b'edited\n')
333 > EOT
329 > EOT
334
330
335 #if execbit
331 #if execbit
336 $ chmod +x 'diff tool.py'
332 $ chmod +x 'diff tool.py'
337 #endif
333 #endif
338
334
339 will change to /tmp/extdiff.TMP and populate directories a.TMP and a
335 will change to /tmp/extdiff.TMP and populate directories a.TMP and a
340 and start tool
336 and start tool
341
337
342 #if windows
338 #if windows
343 $ cat > 'diff tool.bat' << EOF
339 $ cat > 'diff tool.bat' << EOF
344 > @"$PYTHON" "`pwd`/diff tool.py"
340 > @"$PYTHON" "`pwd`/diff tool.py"
345 > EOF
341 > EOF
346 $ hg extdiff -p "`pwd`/diff tool.bat"
342 $ hg extdiff -p "`pwd`/diff tool.bat"
347 [1]
343 [1]
348 #else
344 #else
349 $ hg extdiff -p "`pwd`/diff tool.py"
345 $ hg extdiff -p "`pwd`/diff tool.py"
350 [1]
346 [1]
351 #endif
347 #endif
352
348
353 Diff in working directory, after:
349 Diff in working directory, after:
354
350
355 $ hg diff --git
351 $ hg diff --git
356 diff --git a/a b/a
352 diff --git a/a b/a
357 --- a/a
353 --- a/a
358 +++ b/a
354 +++ b/a
359 @@ -1,1 +1,2 @@
355 @@ -1,1 +1,2 @@
360 -a
356 -a
361 +changed
357 +changed
362 +edited
358 +edited
363 diff --git a/b b/b
359 diff --git a/b b/b
364 old mode 100644 (execbit !)
360 old mode 100644 (execbit !)
365 new mode 100755 (execbit !)
361 new mode 100755 (execbit !)
366 --- a/b
362 --- a/b
367 +++ b/b
363 +++ b/b
368 @@ -1,1 +1,2 @@
364 @@ -1,1 +1,2 @@
369 -b
365 -b
370 +changed
366 +changed
371 +edited
367 +edited
372
368
373 Test extdiff with --option:
369 Test extdiff with --option:
374
370
375 $ hg extdiff -p echo -o this -c 1
371 $ hg extdiff -p echo -o this -c 1
376 this "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
372 this "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
377 this */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
373 this */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
378 [1]
374 [1]
379
375
380 $ hg falabala -o this -c 1
376 $ hg falabala -o this -c 1
381 diffing this "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
377 diffing this "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
382 diffing this */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
378 diffing this */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
383 [1]
379 [1]
384
380
385 Test extdiff's handling of options with spaces in them:
381 Test extdiff's handling of options with spaces in them:
386
382
387 $ hg edspace -c 1
383 $ hg edspace -c 1
388 "name <user@example.com>" "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
384 "name <user@example.com>" "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
389 name <user@example.com> */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
385 name <user@example.com> */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
390 [1]
386 [1]
391
387
392 $ hg extdiff -p echo -o "name <user@example.com>" -c 1
388 $ hg extdiff -p echo -o "name <user@example.com>" -c 1
393 "name <user@example.com>" "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
389 "name <user@example.com>" "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
394 name <user@example.com> */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
390 name <user@example.com> */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
395 [1]
391 [1]
396
392
397 Test with revsets:
393 Test with revsets:
398
394
399 $ hg extdif -p echo -c "rev(1)"
395 $ hg extdif -p echo -c "rev(1)"
400 "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
396 "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
401 */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
397 */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
402 [1]
398 [1]
403
399
404 $ hg extdif -p echo -r "0::1"
400 $ hg extdif -p echo -r "0::1"
405 "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
401 "*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob) (windows !)
406 */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
402 */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) (no-windows !)
407 [1]
403 [1]
408
404
409 Fallback to merge-tools.tool.executable|regkey
405 Fallback to merge-tools.tool.executable|regkey
410 $ mkdir dir
406 $ mkdir dir
411 $ cat > 'dir/tool.sh' << 'EOF'
407 $ cat > 'dir/tool.sh' << 'EOF'
412 > #!/bin/sh
408 > #!/bin/sh
413 > # Mimic a tool that syncs all attrs, including mtime
409 > # Mimic a tool that syncs all attrs, including mtime
414 > cp $1/a $2/a
410 > cp $1/a $2/a
415 > touch -r $1/a $2/a
411 > touch -r $1/a $2/a
416 > chmod +x $2/a
412 > chmod +x $2/a
417 > echo "** custom diff **"
413 > echo "** custom diff **"
418 > EOF
414 > EOF
419 #if execbit
415 #if execbit
420 $ chmod +x dir/tool.sh
416 $ chmod +x dir/tool.sh
421 #endif
417 #endif
422
418
423 Windows can't run *.sh directly, so create a shim executable that can be.
419 Windows can't run *.sh directly, so create a shim executable that can be.
424 Without something executable, the next hg command will try to run `tl` instead
420 Without something executable, the next hg command will try to run `tl` instead
425 of $tool (and fail).
421 of $tool (and fail).
426 #if windows
422 #if windows
427 $ cat > dir/tool.bat <<EOF
423 $ cat > dir/tool.bat <<EOF
428 > @sh -c "`pwd`/dir/tool.sh %1 %2"
424 > @sh -c "`pwd`/dir/tool.sh %1 %2"
429 > EOF
425 > EOF
430 $ tool=`pwd`/dir/tool.bat
426 $ tool=`pwd`/dir/tool.bat
431 #else
427 #else
432 $ tool=`pwd`/dir/tool.sh
428 $ tool=`pwd`/dir/tool.sh
433 #endif
429 #endif
434
430
435 $ cat a
431 $ cat a
436 changed
432 changed
437 edited
433 edited
438 $ hg --debug tl --config extdiff.tl= --config merge-tools.tl.executable=$tool
434 $ hg --debug tl --config extdiff.tl= --config merge-tools.tl.executable=$tool
439 making snapshot of 2 files from rev * (glob)
435 making snapshot of 2 files from rev * (glob)
440 a
436 a
441 b
437 b
442 making snapshot of 2 files from working directory
438 making snapshot of 2 files from working directory
443 a
439 a
444 b
440 b
445 running '$TESTTMP/a/dir/tool.bat a.* a' in */extdiff.* (glob) (windows !)
441 running '$TESTTMP/a/dir/tool.bat a.* a' in */extdiff.* (glob) (windows !)
446 running '$TESTTMP/a/dir/tool.sh a.* a' in */extdiff.* (glob) (no-windows !)
442 running '$TESTTMP/a/dir/tool.sh a.* a' in */extdiff.* (glob) (no-windows !)
447 ** custom diff **
443 ** custom diff **
448 file changed while diffing. Overwriting: $TESTTMP/a/a (src: */extdiff.*/a/a) (glob)
444 file changed while diffing. Overwriting: $TESTTMP/a/a (src: */extdiff.*/a/a) (glob)
449 cleaning up temp directory
445 cleaning up temp directory
450 [1]
446 [1]
451 $ cat a
447 $ cat a
452 a
448 a
453
449
454 #if execbit
450 #if execbit
455 $ [ -x a ]
451 $ [ -x a ]
456
452
457 $ cat > 'dir/tool.sh' << 'EOF'
453 $ cat > 'dir/tool.sh' << 'EOF'
458 > #!/bin/sh
454 > #!/bin/sh
459 > chmod -x $2/a
455 > chmod -x $2/a
460 > echo "** custom diff **"
456 > echo "** custom diff **"
461 > EOF
457 > EOF
462
458
463 $ hg --debug tl --config extdiff.tl= --config merge-tools.tl.executable=$tool
459 $ hg --debug tl --config extdiff.tl= --config merge-tools.tl.executable=$tool
464 making snapshot of 2 files from rev * (glob)
460 making snapshot of 2 files from rev * (glob)
465 a
461 a
466 b
462 b
467 making snapshot of 2 files from working directory
463 making snapshot of 2 files from working directory
468 a
464 a
469 b
465 b
470 running '$TESTTMP/a/dir/tool.sh a.* a' in */extdiff.* (glob)
466 running '$TESTTMP/a/dir/tool.sh a.* a' in */extdiff.* (glob)
471 ** custom diff **
467 ** custom diff **
472 file changed while diffing. Overwriting: $TESTTMP/a/a (src: */extdiff.*/a/a) (glob)
468 file changed while diffing. Overwriting: $TESTTMP/a/a (src: */extdiff.*/a/a) (glob)
473 cleaning up temp directory
469 cleaning up temp directory
474 [1]
470 [1]
475
471
476 $ [ -x a ]
472 $ [ -x a ]
477 [1]
473 [1]
478 #endif
474 #endif
479
475
480 $ cd ..
476 $ cd ..
481
477
482 #if symlink
478 #if symlink
483
479
484 Test symlinks handling (issue1909)
480 Test symlinks handling (issue1909)
485
481
486 $ hg init testsymlinks
482 $ hg init testsymlinks
487 $ cd testsymlinks
483 $ cd testsymlinks
488 $ echo a > a
484 $ echo a > a
489 $ hg ci -Am adda
485 $ hg ci -Am adda
490 adding a
486 adding a
491 $ echo a >> a
487 $ echo a >> a
492 $ ln -s missing linka
488 $ ln -s missing linka
493 $ hg add linka
489 $ hg add linka
494 $ hg falabala -r 0 --traceback
490 $ hg falabala -r 0 --traceback
495 diffing testsymlinks.07f494440405 testsymlinks
491 diffing testsymlinks.07f494440405 testsymlinks
496 [1]
492 [1]
497 $ cd ..
493 $ cd ..
498
494
499 #endif
495 #endif
500
496
501 Test handling of non-ASCII paths in generated docstrings (issue5301)
497 Test handling of non-ASCII paths in generated docstrings (issue5301)
502
498
503 >>> with open("u", "wb") as f:
499 >>> with open("u", "wb") as f:
504 ... n = f.write(b"\xa5\xa5")
500 ... n = f.write(b"\xa5\xa5")
505 $ U=`cat u`
501 $ U=`cat u`
506
502
507 $ HGPLAIN=1 hg --config hgext.extdiff= --config extdiff.cmd.td=hi help -k xyzzy
503 $ HGPLAIN=1 hg --config hgext.extdiff= --config extdiff.cmd.td=hi help -k xyzzy
508 abort: no matches
504 abort: no matches
509 (try 'hg help' for a list of topics)
505 (try 'hg help' for a list of topics)
510 [255]
506 [255]
511
507
512 $ HGPLAIN=1 hg --config hgext.extdiff= --config extdiff.cmd.td=hi help td > /dev/null
508 $ HGPLAIN=1 hg --config hgext.extdiff= --config extdiff.cmd.td=hi help td > /dev/null
513
509
514 $ LC_MESSAGES=ja_JP.UTF-8 hg --config hgext.extdiff= --config extdiff.cmd.td=$U help -k xyzzy
510 $ LC_MESSAGES=ja_JP.UTF-8 hg --config hgext.extdiff= --config extdiff.cmd.td=$U help -k xyzzy
515 abort: no matches
511 abort: no matches
516 (try 'hg help' for a list of topics)
512 (try 'hg help' for a list of topics)
517 [255]
513 [255]
518
514
519 $ LC_MESSAGES=ja_JP.UTF-8 hg --config hgext.extdiff= --config extdiff.cmd.td=$U help td \
515 $ LC_MESSAGES=ja_JP.UTF-8 hg --config hgext.extdiff= --config extdiff.cmd.td=$U help td \
520 > | grep "^ '"
516 > | grep "^ '"
521 '\xa5\xa5'
517 '\xa5\xa5'
General Comments 0
You need to be logged in to leave comments. Login now