##// END OF EJS Templates
py3: suppress the return value from .write() call...
Pulkit Goyal -
r39654:2f40bceb default
parent child Browse files
Show More
@@ -1,399 +1,399 b''
1 1 #require mtn
2 2
3 3 Monotone directory is called .monotone on *nix and monotone
4 4 on Windows.
5 5
6 6 #if windows
7 7
8 8 $ mtndir=monotone
9 9
10 10 #else
11 11
12 12 $ mtndir=.monotone
13 13
14 14 #endif
15 15
16 16 $ echo "[extensions]" >> $HGRCPATH
17 17 $ echo "convert=" >> $HGRCPATH
18 18
19 19 Windows version of monotone home
20 20
21 21 $ APPDATA=$HOME; export APPDATA
22 22
23 23 tedious monotone keys configuration
24 24 The /dev/null redirection is necessary under Windows, or
25 25 it complains about home directory permissions
26 26
27 27 $ mtn --quiet genkey test@selenic.com 1>/dev/null 2>&1 <<EOF
28 28 > passphrase
29 29 > passphrase
30 30 > EOF
31 31 $ cat >> $HOME/$mtndir/monotonerc <<EOF
32 32 > function get_passphrase(keypair_id)
33 33 > return "passphrase"
34 34 > end
35 35 > EOF
36 36
37 37 create monotone repository
38 38
39 39 $ mtn db init --db=repo.mtn
40 40 $ mtn --db=repo.mtn --branch=com.selenic.test setup workingdir
41 41 $ cd workingdir
42 42 $ echo a > a
43 43 $ mkdir dir
44 44 $ echo b > dir/b
45 45 $ echo d > dir/d
46 $ $PYTHON -c 'open("bin", "wb").write(b"a\\x00b")'
46 $ $PYTHON -c 'open("bin", "wb").write(b"a\\x00b") and None'
47 47 $ echo c > c
48 48 $ mtn add a dir/b dir/d c bin
49 49 mtn: adding 'a' to workspace manifest
50 50 mtn: adding 'bin' to workspace manifest
51 51 mtn: adding 'c' to workspace manifest
52 52 mtn: adding 'dir' to workspace manifest
53 53 mtn: adding 'dir/b' to workspace manifest
54 54 mtn: adding 'dir/d' to workspace manifest
55 55 $ mtn ci -m initialize
56 56 mtn: beginning commit on branch 'com.selenic.test'
57 57 mtn: committed revision 0f6e5e4f2e7d2a8ef312408f57618abf026afd90
58 58
59 59 update monotone working directory
60 60
61 61 $ mtn mv a dir/a
62 62 mtn: skipping 'dir', already accounted for in workspace
63 63 mtn: renaming 'a' to 'dir/a' in workspace manifest
64 64 $ echo a >> dir/a
65 65 $ echo b >> dir/b
66 66 $ mtn drop c
67 67 mtn: dropping 'c' from workspace manifest
68 $ $PYTHON -c 'open("bin", "wb").write(b"b\\x00c")'
68 $ $PYTHON -c 'open("bin", "wb").write(b"b\\x00c") and None'
69 69 $ mtn ci -m update1
70 70 mtn: beginning commit on branch 'com.selenic.test'
71 71 mtn: committed revision 51d0a982464573a2a2cf5ee2c9219c652aaebeff
72 72 $ cd ..
73 73
74 74 convert once
75 75
76 76 $ hg convert -s mtn repo.mtn
77 77 assuming destination repo.mtn-hg
78 78 initializing destination repo.mtn-hg repository
79 79 scanning source...
80 80 sorting...
81 81 converting...
82 82 1 initialize
83 83 0 update1
84 84 $ cd workingdir
85 85 $ echo e > e
86 86 $ mtn add e
87 87 mtn: adding 'e' to workspace manifest
88 88 $ mtn drop dir/b
89 89 mtn: dropping 'dir/b' from workspace manifest
90 90 $ mtn mv bin bin2
91 91 mtn: renaming 'bin' to 'bin2' in workspace manifest
92 92 $ mtn ci -m 'update2 "with" quotes'
93 93 mtn: beginning commit on branch 'com.selenic.test'
94 94 mtn: committed revision ebe58335d85d8cb176b6d0a12be04f5314b998da
95 95
96 96 test directory move
97 97
98 98 $ mkdir -p dir1/subdir1
99 99 $ mkdir -p dir1/subdir2_other
100 100 $ echo file1 > dir1/subdir1/file1
101 101 $ echo file2 > dir1/subdir2_other/file1
102 102 $ mtn add dir1/subdir1/file1 dir1/subdir2_other/file1
103 103 mtn: adding 'dir1' to workspace manifest
104 104 mtn: adding 'dir1/subdir1' to workspace manifest
105 105 mtn: adding 'dir1/subdir1/file1' to workspace manifest
106 106 mtn: adding 'dir1/subdir2_other' to workspace manifest
107 107 mtn: adding 'dir1/subdir2_other/file1' to workspace manifest
108 108 $ mtn ci -m createdir1
109 109 mtn: beginning commit on branch 'com.selenic.test'
110 110 mtn: committed revision a8d62bc04fee4d2936d28e98bbcc81686dd74306
111 111 $ mtn rename dir1/subdir1 dir1/subdir2
112 112 mtn: skipping 'dir1', already accounted for in workspace
113 113 mtn: renaming 'dir1/subdir1' to 'dir1/subdir2' in workspace manifest
114 114 $ mtn ci -m movedir1
115 115 mtn: beginning commit on branch 'com.selenic.test'
116 116 mtn: committed revision 2c3d241bbbfe538b1b51d910f5676407e3f4d3a6
117 117
118 118 test subdirectory move
119 119
120 120 $ mtn mv dir dir2
121 121 mtn: renaming 'dir' to 'dir2' in workspace manifest
122 122 $ echo newfile > dir2/newfile
123 123 $ mtn drop dir2/d
124 124 mtn: dropping 'dir2/d' from workspace manifest
125 125 $ mtn add dir2/newfile
126 126 mtn: adding 'dir2/newfile' to workspace manifest
127 127 $ mtn ci -m movedir
128 128 mtn: beginning commit on branch 'com.selenic.test'
129 129 mtn: committed revision fdb5a02dae8bfce3a79b3393680af471016e1b4c
130 130
131 131 Test directory removal with empty directory
132 132
133 133 $ mkdir dir2/dir
134 134 $ mkdir dir2/dir/subdir
135 135 $ echo f > dir2/dir/subdir/f
136 136 $ mkdir dir2/dir/emptydir
137 137 $ mtn add --quiet -R dir2/dir
138 138 $ mtn ci -m emptydir
139 139 mtn: beginning commit on branch 'com.selenic.test'
140 140 mtn: committed revision 8bbf76d717001d24964e4604739fdcd0f539fc88
141 141 $ mtn drop -R dir2/dir
142 142 mtn: dropping 'dir2/dir/subdir/f' from workspace manifest
143 143 mtn: dropping 'dir2/dir/subdir' from workspace manifest
144 144 mtn: dropping 'dir2/dir/emptydir' from workspace manifest
145 145 mtn: dropping 'dir2/dir' from workspace manifest
146 146 $ mtn ci -m dropdirectory
147 147 mtn: beginning commit on branch 'com.selenic.test'
148 148 mtn: committed revision 2323d4bc324e6c82628dc04d47a9fd32ad24e322
149 149
150 150 test directory and file move
151 151
152 152 $ mkdir -p dir3/d1
153 153 $ echo a > dir3/a
154 154 $ mtn add dir3/a dir3/d1
155 155 mtn: adding 'dir3' to workspace manifest
156 156 mtn: adding 'dir3/a' to workspace manifest
157 157 mtn: adding 'dir3/d1' to workspace manifest
158 158 $ mtn ci -m dirfilemove
159 159 mtn: beginning commit on branch 'com.selenic.test'
160 160 mtn: committed revision 47b192f720faa622f48c68d1eb075b26d405aa8b
161 161 $ mtn mv dir3/a dir3/d1/a
162 162 mtn: skipping 'dir3/d1', already accounted for in workspace
163 163 mtn: renaming 'dir3/a' to 'dir3/d1/a' in workspace manifest
164 164 $ mtn mv dir3/d1 dir3/d2
165 165 mtn: skipping 'dir3', already accounted for in workspace
166 166 mtn: renaming 'dir3/d1' to 'dir3/d2' in workspace manifest
167 167 $ mtn ci -m dirfilemove2
168 168 mtn: beginning commit on branch 'com.selenic.test'
169 169 mtn: committed revision 8b543a400d3ee7f6d4bb1835b9b9e3747c8cb632
170 170
171 171 test directory move into another directory move
172 172
173 173 $ mkdir dir4
174 174 $ mkdir dir5
175 175 $ echo a > dir4/a
176 176 $ mtn add dir4/a dir5
177 177 mtn: adding 'dir4' to workspace manifest
178 178 mtn: adding 'dir4/a' to workspace manifest
179 179 mtn: adding 'dir5' to workspace manifest
180 180 $ mtn ci -m dirdirmove
181 181 mtn: beginning commit on branch 'com.selenic.test'
182 182 mtn: committed revision 466e0b2afc7a55aa2b4ab2f57cb240bb6cd66fc7
183 183 $ mtn mv dir5 dir6
184 184 mtn: renaming 'dir5' to 'dir6' in workspace manifest
185 185 $ mtn mv dir4 dir6/dir4
186 186 mtn: skipping 'dir6', already accounted for in workspace
187 187 mtn: renaming 'dir4' to 'dir6/dir4' in workspace manifest
188 188 $ mtn ci -m dirdirmove2
189 189 mtn: beginning commit on branch 'com.selenic.test'
190 190 mtn: committed revision 3d1f77ebad0c23a5d14911be3b670f990991b749
191 191
192 192 test diverging directory moves
193 193
194 194 $ mkdir -p dir7/dir9/dir8
195 195 $ echo a > dir7/dir9/dir8/a
196 196 $ echo b > dir7/dir9/b
197 197 $ echo c > dir7/c
198 198 $ mtn add -R dir7
199 199 mtn: adding 'dir7' to workspace manifest
200 200 mtn: adding 'dir7/c' to workspace manifest
201 201 mtn: adding 'dir7/dir9' to workspace manifest
202 202 mtn: adding 'dir7/dir9/b' to workspace manifest
203 203 mtn: adding 'dir7/dir9/dir8' to workspace manifest
204 204 mtn: adding 'dir7/dir9/dir8/a' to workspace manifest
205 205 $ mtn ci -m divergentdirmove
206 206 mtn: beginning commit on branch 'com.selenic.test'
207 207 mtn: committed revision 08a08511f18b428d840199b062de90d0396bc2ed
208 208 $ mtn mv dir7 dir7-2
209 209 mtn: renaming 'dir7' to 'dir7-2' in workspace manifest
210 210 $ mtn mv dir7-2/dir9 dir9-2
211 211 mtn: renaming 'dir7-2/dir9' to 'dir9-2' in workspace manifest
212 212 $ mtn mv dir9-2/dir8 dir8-2
213 213 mtn: renaming 'dir9-2/dir8' to 'dir8-2' in workspace manifest
214 214 $ mtn ci -m divergentdirmove2
215 215 mtn: beginning commit on branch 'com.selenic.test'
216 216 mtn: committed revision 4a736634505795f17786fffdf2c9cbf5b11df6f6
217 217
218 218 test large file support (> 32kB)
219 219
220 220 >>> fp = open('large-file', 'wb')
221 >>> for x in range(10000): fp.write(b'%d\n' % x)
221 >>> for x in range(10000): fp.write(b'%d\n' % x) and None
222 222 >>> fp.close()
223 223 $ md5sum.py large-file
224 224 5d6de8a95c3b6bf9e0ffb808ba5299c1 large-file
225 225 $ mtn add large-file
226 226 mtn: adding 'large-file' to workspace manifest
227 227 $ mtn ci -m largefile
228 228 mtn: beginning commit on branch 'com.selenic.test'
229 229 mtn: committed revision f0a20fecd10dc4392d18fe69a03f1f4919d3387b
230 230
231 231 test suspending (closing a branch)
232 232
233 233 $ mtn suspend f0a20fecd10dc4392d18fe69a03f1f4919d3387b 2> /dev/null
234 234 $ cd ..
235 235
236 236 convert incrementally
237 237
238 238 $ hg convert -s mtn repo.mtn
239 239 assuming destination repo.mtn-hg
240 240 scanning source...
241 241 sorting...
242 242 converting...
243 243 12 update2 "with" quotes
244 244 11 createdir1
245 245 10 movedir1
246 246 9 movedir
247 247 8 emptydir
248 248 7 dropdirectory
249 249 6 dirfilemove
250 250 5 dirfilemove2
251 251 4 dirdirmove
252 252 3 dirdirmove2
253 253 2 divergentdirmove
254 254 1 divergentdirmove2
255 255 0 largefile
256 256 $ glog()
257 257 > {
258 258 > hg log -G --template '{rev} "{desc|firstline}" files: {files}\n' "$@"
259 259 > }
260 260 $ cd repo.mtn-hg
261 261 $ hg up -C
262 262 12 files updated, 0 files merged, 0 files removed, 0 files unresolved
263 263 no open descendant heads on branch "com.selenic.test", updating to a closed head
264 264 (committing will reopen branch "com.selenic.test")
265 265 $ glog
266 266 @ 14 "largefile" files: large-file
267 267 |
268 268 o 13 "divergentdirmove2" files: dir7-2/c dir7/c dir7/dir9/b dir7/dir9/dir8/a dir8-2/a dir9-2/b
269 269 |
270 270 o 12 "divergentdirmove" files: dir7/c dir7/dir9/b dir7/dir9/dir8/a
271 271 |
272 272 o 11 "dirdirmove2" files: dir4/a dir6/dir4/a
273 273 |
274 274 o 10 "dirdirmove" files: dir4/a
275 275 |
276 276 o 9 "dirfilemove2" files: dir3/a dir3/d2/a
277 277 |
278 278 o 8 "dirfilemove" files: dir3/a
279 279 |
280 280 o 7 "dropdirectory" files: dir2/dir/subdir/f
281 281 |
282 282 o 6 "emptydir" files: dir2/dir/subdir/f
283 283 |
284 284 o 5 "movedir" files: dir/a dir/d dir2/a dir2/newfile
285 285 |
286 286 o 4 "movedir1" files: dir1/subdir1/file1 dir1/subdir2/file1
287 287 |
288 288 o 3 "createdir1" files: dir1/subdir1/file1 dir1/subdir2_other/file1
289 289 |
290 290 o 2 "update2 "with" quotes" files: bin bin2 dir/b e
291 291 |
292 292 o 1 "update1" files: a bin c dir/a dir/b
293 293 |
294 294 o 0 "initialize" files: a bin c dir/b dir/d
295 295
296 296
297 297 manifest
298 298
299 299 $ hg manifest
300 300 bin2
301 301 dir1/subdir2/file1
302 302 dir1/subdir2_other/file1
303 303 dir2/a
304 304 dir2/newfile
305 305 dir3/d2/a
306 306 dir6/dir4/a
307 307 dir7-2/c
308 308 dir8-2/a
309 309 dir9-2/b
310 310 e
311 311 large-file
312 312
313 313 contents
314 314
315 315 $ cat dir2/a
316 316 a
317 317 a
318 318 $ test -d dir2/dir && echo 'removed dir2/dir is still there!'
319 319 [1]
320 320
321 321 file move
322 322
323 323 $ hg log -v -C -r 1 | grep copies
324 324 copies: dir/a (a)
325 325
326 326 check directory move
327 327
328 328 $ hg manifest -r 4
329 329 bin2
330 330 dir/a
331 331 dir/d
332 332 dir1/subdir2/file1
333 333 dir1/subdir2_other/file1
334 334 e
335 335 $ test -d dir1/subdir2 || echo 'new dir1/subdir2 does not exist!'
336 336 $ test -d dir1/subdir1 && echo 'renamed dir1/subdir1 is still there!'
337 337 [1]
338 338 $ hg log -v -C -r 4 | grep copies
339 339 copies: dir1/subdir2/file1 (dir1/subdir1/file1)
340 340
341 341 check file remove with directory move
342 342
343 343 $ hg manifest -r 5
344 344 bin2
345 345 dir1/subdir2/file1
346 346 dir1/subdir2_other/file1
347 347 dir2/a
348 348 dir2/newfile
349 349 e
350 350
351 351 check file move with directory move
352 352
353 353 $ hg manifest -r 9
354 354 bin2
355 355 dir1/subdir2/file1
356 356 dir1/subdir2_other/file1
357 357 dir2/a
358 358 dir2/newfile
359 359 dir3/d2/a
360 360 e
361 361
362 362 check file directory directory move
363 363
364 364 $ hg manifest -r 11
365 365 bin2
366 366 dir1/subdir2/file1
367 367 dir1/subdir2_other/file1
368 368 dir2/a
369 369 dir2/newfile
370 370 dir3/d2/a
371 371 dir6/dir4/a
372 372 e
373 373
374 374 check divergent directory moves
375 375
376 376 $ hg manifest -r 13
377 377 bin2
378 378 dir1/subdir2/file1
379 379 dir1/subdir2_other/file1
380 380 dir2/a
381 381 dir2/newfile
382 382 dir3/d2/a
383 383 dir6/dir4/a
384 384 dir7-2/c
385 385 dir8-2/a
386 386 dir9-2/b
387 387 e
388 388
389 389 test large file support (> 32kB)
390 390
391 391 $ md5sum.py large-file
392 392 5d6de8a95c3b6bf9e0ffb808ba5299c1 large-file
393 393
394 394 check branch closing
395 395
396 396 $ hg branches -a
397 397 $ hg branches -c
398 398 com.selenic.test 14:* (closed) (glob)
399 399
@@ -1,416 +1,416 b''
1 1 Setup
2 2
3 3 $ cat <<EOF >> $HGRCPATH
4 4 > [ui]
5 5 > color = yes
6 6 > formatted = always
7 7 > paginate = never
8 8 > [color]
9 9 > mode = ansi
10 10 > EOF
11 11 $ hg init repo
12 12 $ cd repo
13 13 $ cat > a <<EOF
14 14 > c
15 15 > c
16 16 > a
17 17 > a
18 18 > b
19 19 > a
20 20 > a
21 21 > c
22 22 > c
23 23 > EOF
24 24 $ hg ci -Am adda
25 25 \x1b[0;32madding a\x1b[0m (esc)
26 26 $ cat > a <<EOF
27 27 > c
28 28 > c
29 29 > a
30 30 > a
31 31 > dd
32 32 > a
33 33 > a
34 34 > c
35 35 > c
36 36 > EOF
37 37
38 38 default context
39 39
40 40 $ hg diff --nodates
41 41 \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
42 42 \x1b[0;31;1m--- a/a\x1b[0m (esc)
43 43 \x1b[0;32;1m+++ b/a\x1b[0m (esc)
44 44 \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc)
45 45 c
46 46 a
47 47 a
48 48 \x1b[0;31m-b\x1b[0m (esc)
49 49 \x1b[0;32m+dd\x1b[0m (esc)
50 50 a
51 51 a
52 52 c
53 53
54 54 trailing whitespace
55 55
56 56 $ cp a a.orig
57 57 >>> with open('a', 'rb') as f:
58 58 ... data = f.read()
59 59 >>> with open('a', 'wb') as f:
60 ... f.write(data.replace(b'dd', b'dd \r'))
60 ... f.write(data.replace(b'dd', b'dd \r')) and None
61 61 $ hg diff --nodates
62 62 \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
63 63 \x1b[0;31;1m--- a/a\x1b[0m (esc)
64 64 \x1b[0;32;1m+++ b/a\x1b[0m (esc)
65 65 \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc)
66 66 c
67 67 a
68 68 a
69 69 \x1b[0;31m-b\x1b[0m (esc)
70 70 \x1b[0;32m+dd\x1b[0m\x1b[0;1;41m \x1b[0m\r (esc)
71 71 a
72 72 a
73 73 c
74 74
75 75 $ mv a.orig a
76 76
77 77 (check that 'ui.color=yes' match '--color=auto')
78 78
79 79 $ hg diff --nodates --config ui.formatted=no
80 80 diff -r cf9f4ba66af2 a
81 81 --- a/a
82 82 +++ b/a
83 83 @@ -2,7 +2,7 @@
84 84 c
85 85 a
86 86 a
87 87 -b
88 88 +dd
89 89 a
90 90 a
91 91 c
92 92
93 93 (check that 'ui.color=no' disable color)
94 94
95 95 $ hg diff --nodates --config ui.formatted=yes --config ui.color=no
96 96 diff -r cf9f4ba66af2 a
97 97 --- a/a
98 98 +++ b/a
99 99 @@ -2,7 +2,7 @@
100 100 c
101 101 a
102 102 a
103 103 -b
104 104 +dd
105 105 a
106 106 a
107 107 c
108 108
109 109 (check that 'ui.color=always' force color)
110 110
111 111 $ hg diff --nodates --config ui.formatted=no --config ui.color=always
112 112 \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
113 113 \x1b[0;31;1m--- a/a\x1b[0m (esc)
114 114 \x1b[0;32;1m+++ b/a\x1b[0m (esc)
115 115 \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc)
116 116 c
117 117 a
118 118 a
119 119 \x1b[0;31m-b\x1b[0m (esc)
120 120 \x1b[0;32m+dd\x1b[0m (esc)
121 121 a
122 122 a
123 123 c
124 124
125 125 --unified=2
126 126
127 127 $ hg diff --nodates -U 2
128 128 \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
129 129 \x1b[0;31;1m--- a/a\x1b[0m (esc)
130 130 \x1b[0;32;1m+++ b/a\x1b[0m (esc)
131 131 \x1b[0;35m@@ -3,5 +3,5 @@\x1b[0m (esc)
132 132 a
133 133 a
134 134 \x1b[0;31m-b\x1b[0m (esc)
135 135 \x1b[0;32m+dd\x1b[0m (esc)
136 136 a
137 137 a
138 138
139 139 diffstat
140 140
141 141 $ hg diff --stat
142 142 a | 2 \x1b[0;32m+\x1b[0m\x1b[0;31m-\x1b[0m (esc)
143 143 1 files changed, 1 insertions(+), 1 deletions(-)
144 144 $ cat <<EOF >> $HGRCPATH
145 145 > [extensions]
146 146 > record =
147 147 > [ui]
148 148 > interactive = true
149 149 > [diff]
150 150 > git = True
151 151 > EOF
152 152
153 153 #if execbit
154 154
155 155 record
156 156
157 157 $ chmod +x a
158 158 $ hg record -m moda a <<EOF
159 159 > y
160 160 > y
161 161 > EOF
162 162 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
163 163 \x1b[0;36;1mold mode 100644\x1b[0m (esc)
164 164 \x1b[0;36;1mnew mode 100755\x1b[0m (esc)
165 165 1 hunks, 1 lines changed
166 166 \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
167 167
168 168 \x1b[0;35m@@ -2,7 +2,7 @@ c\x1b[0m (esc)
169 169 c
170 170 a
171 171 a
172 172 \x1b[0;31m-b\x1b[0m (esc)
173 173 \x1b[0;32m+dd\x1b[0m (esc)
174 174 a
175 175 a
176 176 c
177 177 \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
178 178
179 179
180 180 $ echo "[extensions]" >> $HGRCPATH
181 181 $ echo "mq=" >> $HGRCPATH
182 182 $ hg rollback
183 183 repository tip rolled back to revision 0 (undo commit)
184 184 working directory now based on revision 0
185 185
186 186 qrecord
187 187
188 188 $ hg qrecord -m moda patch <<EOF
189 189 > y
190 190 > y
191 191 > EOF
192 192 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
193 193 \x1b[0;36;1mold mode 100644\x1b[0m (esc)
194 194 \x1b[0;36;1mnew mode 100755\x1b[0m (esc)
195 195 1 hunks, 1 lines changed
196 196 \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
197 197
198 198 \x1b[0;35m@@ -2,7 +2,7 @@ c\x1b[0m (esc)
199 199 c
200 200 a
201 201 a
202 202 \x1b[0;31m-b\x1b[0m (esc)
203 203 \x1b[0;32m+dd\x1b[0m (esc)
204 204 a
205 205 a
206 206 c
207 207 \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
208 208
209 209
210 210 $ hg qpop -a
211 211 popping patch
212 212 patch queue now empty
213 213
214 214 #endif
215 215
216 216 issue3712: test colorization of subrepo diff
217 217
218 218 $ hg init sub
219 219 $ echo b > sub/b
220 220 $ hg -R sub commit -Am 'create sub'
221 221 \x1b[0;32madding b\x1b[0m (esc)
222 222 $ echo 'sub = sub' > .hgsub
223 223 $ hg add .hgsub
224 224 $ hg commit -m 'add subrepo sub'
225 225 $ echo aa >> a
226 226 $ echo bb >> sub/b
227 227
228 228 $ hg diff -S
229 229 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
230 230 \x1b[0;31;1m--- a/a\x1b[0m (esc)
231 231 \x1b[0;32;1m+++ b/a\x1b[0m (esc)
232 232 \x1b[0;35m@@ -7,3 +7,4 @@\x1b[0m (esc)
233 233 a
234 234 c
235 235 c
236 236 \x1b[0;32m+aa\x1b[0m (esc)
237 237 \x1b[0;1mdiff --git a/sub/b b/sub/b\x1b[0m (esc)
238 238 \x1b[0;31;1m--- a/sub/b\x1b[0m (esc)
239 239 \x1b[0;32;1m+++ b/sub/b\x1b[0m (esc)
240 240 \x1b[0;35m@@ -1,1 +1,2 @@\x1b[0m (esc)
241 241 b
242 242 \x1b[0;32m+bb\x1b[0m (esc)
243 243
244 244 test tabs
245 245
246 246 $ cat >> a <<EOF
247 247 > one tab
248 248 > two tabs
249 249 > end tab
250 250 > mid tab
251 251 > all tabs
252 252 > EOF
253 253 $ hg diff --nodates
254 254 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
255 255 \x1b[0;31;1m--- a/a\x1b[0m (esc)
256 256 \x1b[0;32;1m+++ b/a\x1b[0m (esc)
257 257 \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc)
258 258 a
259 259 c
260 260 c
261 261 \x1b[0;32m+aa\x1b[0m (esc)
262 262 \x1b[0;32m+\x1b[0m \x1b[0;32mone tab\x1b[0m (esc)
263 263 \x1b[0;32m+\x1b[0m \x1b[0;32mtwo tabs\x1b[0m (esc)
264 264 \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
265 265 \x1b[0;32m+mid\x1b[0m \x1b[0;32mtab\x1b[0m (esc)
266 266 \x1b[0;32m+\x1b[0m \x1b[0;32mall\x1b[0m \x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
267 267 $ echo "[color]" >> $HGRCPATH
268 268 $ echo "diff.tab = bold magenta" >> $HGRCPATH
269 269 $ hg diff --nodates
270 270 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
271 271 \x1b[0;31;1m--- a/a\x1b[0m (esc)
272 272 \x1b[0;32;1m+++ b/a\x1b[0m (esc)
273 273 \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc)
274 274 a
275 275 c
276 276 c
277 277 \x1b[0;32m+aa\x1b[0m (esc)
278 278 \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mone tab\x1b[0m (esc)
279 279 \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtwo tabs\x1b[0m (esc)
280 280 \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
281 281 \x1b[0;32m+mid\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtab\x1b[0m (esc)
282 282 \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mall\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
283 283
284 284 $ cd ..
285 285
286 286 test inline color diff
287 287
288 288 $ hg init inline
289 289 $ cd inline
290 290 $ cat > file1 << EOF
291 291 > this is the first line
292 292 > this is the second line
293 293 > third line starts with space
294 294 > + starts with a plus sign
295 295 > this one with one tab
296 296 > now with full two tabs
297 297 > now tabs everywhere, much fun
298 298 >
299 299 > this line won't change
300 300 >
301 301 > two lines are going to
302 302 > be changed into three!
303 303 >
304 304 > three of those lines will
305 305 > collapse onto one
306 306 > (to see if it works)
307 307 > EOF
308 308 $ hg add file1
309 309 $ hg ci -m 'commit'
310 310
311 311 $ cat > file1 << EOF
312 312 > that is the first paragraph
313 313 > this is the second line
314 314 > third line starts with space
315 315 > - starts with a minus sign
316 316 > this one with two tab
317 317 > now with full three tabs
318 318 > now there are tabs everywhere, much fun
319 319 >
320 320 > this line won't change
321 321 >
322 322 > two lines are going to
323 323 > (entirely magically,
324 324 > assuming this works)
325 325 > be changed into four!
326 326 >
327 327 > three of those lines have
328 328 > collapsed onto one
329 329 > EOF
330 330 $ hg diff --config diff.word-diff=False --color=debug
331 331 [diff.diffline|diff --git a/file1 b/file1]
332 332 [diff.file_a|--- a/file1]
333 333 [diff.file_b|+++ b/file1]
334 334 [diff.hunk|@@ -1,16 +1,17 @@]
335 335 [diff.deleted|-this is the first line]
336 336 [diff.deleted|-this is the second line]
337 337 [diff.deleted|- third line starts with space]
338 338 [diff.deleted|-+ starts with a plus sign]
339 339 [diff.deleted|-][diff.tab| ][diff.deleted|this one with one tab]
340 340 [diff.deleted|-][diff.tab| ][diff.deleted|now with full two tabs]
341 341 [diff.deleted|-][diff.tab| ][diff.deleted|now tabs][diff.tab| ][diff.deleted|everywhere, much fun]
342 342 [diff.inserted|+that is the first paragraph]
343 343 [diff.inserted|+ this is the second line]
344 344 [diff.inserted|+third line starts with space]
345 345 [diff.inserted|+- starts with a minus sign]
346 346 [diff.inserted|+][diff.tab| ][diff.inserted|this one with two tab]
347 347 [diff.inserted|+][diff.tab| ][diff.inserted|now with full three tabs]
348 348 [diff.inserted|+][diff.tab| ][diff.inserted|now there are tabs][diff.tab| ][diff.inserted|everywhere, much fun]
349 349
350 350 this line won't change
351 351
352 352 two lines are going to
353 353 [diff.deleted|-be changed into three!]
354 354 [diff.inserted|+(entirely magically,]
355 355 [diff.inserted|+ assuming this works)]
356 356 [diff.inserted|+be changed into four!]
357 357
358 358 [diff.deleted|-three of those lines will]
359 359 [diff.deleted|-collapse onto one]
360 360 [diff.deleted|-(to see if it works)]
361 361 [diff.inserted|+three of those lines have]
362 362 [diff.inserted|+collapsed onto one]
363 363 $ hg diff --config diff.word-diff=True --color=debug
364 364 [diff.diffline|diff --git a/file1 b/file1]
365 365 [diff.file_a|--- a/file1]
366 366 [diff.file_b|+++ b/file1]
367 367 [diff.hunk|@@ -1,16 +1,17 @@]
368 368 [diff.deleted|-][diff.deleted.changed|this][diff.deleted.unchanged| is the first ][diff.deleted.changed|line]
369 369 [diff.deleted|-][diff.deleted.unchanged|this is the second line]
370 370 [diff.deleted|-][diff.deleted.changed| ][diff.deleted.unchanged|third line starts with space]
371 371 [diff.deleted|-][diff.deleted.changed|+][diff.deleted.unchanged| starts with a ][diff.deleted.changed|plus][diff.deleted.unchanged| sign]
372 372 [diff.deleted|-][diff.tab| ][diff.deleted.unchanged|this one with ][diff.deleted.changed|one][diff.deleted.unchanged| tab]
373 373 [diff.deleted|-][diff.tab| ][diff.deleted.unchanged|now with full ][diff.deleted.changed|two][diff.deleted.unchanged| tabs]
374 374 [diff.deleted|-][diff.tab| ][diff.deleted.unchanged|now ][diff.deleted.unchanged|tabs][diff.tab| ][diff.deleted.unchanged|everywhere, much fun]
375 375 [diff.inserted|+][diff.inserted.changed|that][diff.inserted.unchanged| is the first ][diff.inserted.changed|paragraph]
376 376 [diff.inserted|+][diff.inserted.changed| ][diff.inserted.unchanged|this is the second line]
377 377 [diff.inserted|+][diff.inserted.unchanged|third line starts with space]
378 378 [diff.inserted|+][diff.inserted.changed|-][diff.inserted.unchanged| starts with a ][diff.inserted.changed|minus][diff.inserted.unchanged| sign]
379 379 [diff.inserted|+][diff.tab| ][diff.inserted.unchanged|this one with ][diff.inserted.changed|two][diff.inserted.unchanged| tab]
380 380 [diff.inserted|+][diff.tab| ][diff.inserted.unchanged|now with full ][diff.inserted.changed|three][diff.inserted.unchanged| tabs]
381 381 [diff.inserted|+][diff.tab| ][diff.inserted.unchanged|now ][diff.inserted.changed|there are ][diff.inserted.unchanged|tabs][diff.tab| ][diff.inserted.unchanged|everywhere, much fun]
382 382
383 383 this line won't change
384 384
385 385 two lines are going to
386 386 [diff.deleted|-][diff.deleted.unchanged|be changed into ][diff.deleted.changed|three][diff.deleted.unchanged|!]
387 387 [diff.inserted|+][diff.inserted.changed|(entirely magically,]
388 388 [diff.inserted|+][diff.inserted.changed| assuming this works)]
389 389 [diff.inserted|+][diff.inserted.unchanged|be changed into ][diff.inserted.changed|four][diff.inserted.unchanged|!]
390 390
391 391 [diff.deleted|-][diff.deleted.unchanged|three of those lines ][diff.deleted.changed|will]
392 392 [diff.deleted|-][diff.deleted.changed|collapse][diff.deleted.unchanged| onto one]
393 393 [diff.deleted|-][diff.deleted.changed|(to see if it works)]
394 394 [diff.inserted|+][diff.inserted.unchanged|three of those lines ][diff.inserted.changed|have]
395 395 [diff.inserted|+][diff.inserted.changed|collapsed][diff.inserted.unchanged| onto one]
396 396
397 397 multibyte character shouldn't be broken up in word diff:
398 398
399 399 $ $PYTHON <<'EOF'
400 400 > with open("utf8", "wb") as f:
401 401 > f.write(b"blah \xe3\x82\xa2 blah\n")
402 402 > EOF
403 403 $ hg ci -Am 'add utf8 char' utf8
404 404 $ $PYTHON <<'EOF'
405 405 > with open("utf8", "wb") as f:
406 406 > f.write(b"blah \xe3\x82\xa4 blah\n")
407 407 > EOF
408 408 $ hg ci -m 'slightly change utf8 char' utf8
409 409
410 410 $ hg diff --config diff.word-diff=True --color=debug -c.
411 411 [diff.diffline|diff --git a/utf8 b/utf8]
412 412 [diff.file_a|--- a/utf8]
413 413 [diff.file_b|+++ b/utf8]
414 414 [diff.hunk|@@ -1,1 +1,1 @@]
415 415 [diff.deleted|-][diff.deleted.unchanged|blah ][diff.deleted.changed|\xe3\x82\xa2][diff.deleted.unchanged| blah] (esc)
416 416 [diff.inserted|+][diff.inserted.unchanged|blah ][diff.inserted.changed|\xe3\x82\xa4][diff.inserted.unchanged| blah] (esc)
General Comments 0
You need to be logged in to leave comments. Login now