##// END OF EJS Templates
test-subrepo-recursion: restore globs for Windows
Matt Harbison -
r25496:38fd17bc default
parent child Browse files
Show More
@@ -1,572 +1,572 b''
1 1 Create test repository:
2 2
3 3 $ hg init repo
4 4 $ cd repo
5 5 $ echo x1 > x.txt
6 6
7 7 $ hg init foo
8 8 $ cd foo
9 9 $ echo y1 > y.txt
10 10
11 11 $ hg init bar
12 12 $ cd bar
13 13 $ echo z1 > z.txt
14 14
15 15 $ cd ..
16 16 $ echo 'bar = bar' > .hgsub
17 17
18 18 $ cd ..
19 19 $ echo 'foo = foo' > .hgsub
20 20
21 21 Add files --- .hgsub files must go first to trigger subrepos:
22 22
23 23 $ hg add -S .hgsub
24 24 $ hg add -S foo/.hgsub
25 25 $ hg add -S foo/bar
26 26 adding foo/bar/z.txt (glob)
27 27 $ hg add -S
28 28 adding x.txt
29 29 adding foo/y.txt (glob)
30 30
31 31 Test recursive status without committing anything:
32 32
33 33 $ hg status -S
34 34 A .hgsub
35 35 A foo/.hgsub
36 36 A foo/bar/z.txt
37 37 A foo/y.txt
38 38 A x.txt
39 39
40 40 Test recursive diff without committing anything:
41 41
42 42 $ hg diff --nodates -S foo
43 43 diff -r 000000000000 foo/.hgsub
44 44 --- /dev/null
45 45 +++ b/foo/.hgsub
46 46 @@ -0,0 +1,1 @@
47 47 +bar = bar
48 48 diff -r 000000000000 foo/y.txt
49 49 --- /dev/null
50 50 +++ b/foo/y.txt
51 51 @@ -0,0 +1,1 @@
52 52 +y1
53 53 diff -r 000000000000 foo/bar/z.txt
54 54 --- /dev/null
55 55 +++ b/foo/bar/z.txt
56 56 @@ -0,0 +1,1 @@
57 57 +z1
58 58
59 59 Commits:
60 60
61 61 $ hg commit -m fails
62 62 abort: uncommitted changes in subrepository 'foo'
63 63 (use --subrepos for recursive commit)
64 64 [255]
65 65
66 66 The --subrepos flag overwrite the config setting:
67 67
68 68 $ hg commit -m 0-0-0 --config ui.commitsubrepos=No --subrepos
69 69 committing subrepository foo
70 70 committing subrepository foo/bar (glob)
71 71
72 72 $ cd foo
73 73 $ echo y2 >> y.txt
74 74 $ hg commit -m 0-1-0
75 75
76 76 $ cd bar
77 77 $ echo z2 >> z.txt
78 78 $ hg commit -m 0-1-1
79 79
80 80 $ cd ..
81 81 $ hg commit -m 0-2-1
82 82
83 83 $ cd ..
84 84 $ hg commit -m 1-2-1
85 85
86 86 Change working directory:
87 87
88 88 $ echo y3 >> foo/y.txt
89 89 $ echo z3 >> foo/bar/z.txt
90 90 $ hg status -S
91 91 M foo/bar/z.txt
92 92 M foo/y.txt
93 93 $ hg diff --nodates -S
94 94 diff -r d254738c5f5e foo/y.txt
95 95 --- a/foo/y.txt
96 96 +++ b/foo/y.txt
97 97 @@ -1,2 +1,3 @@
98 98 y1
99 99 y2
100 100 +y3
101 101 diff -r 9647f22de499 foo/bar/z.txt
102 102 --- a/foo/bar/z.txt
103 103 +++ b/foo/bar/z.txt
104 104 @@ -1,2 +1,3 @@
105 105 z1
106 106 z2
107 107 +z3
108 108
109 109 Status call crossing repository boundaries:
110 110
111 111 $ hg status -S foo/bar/z.txt
112 112 M foo/bar/z.txt
113 113 $ hg status -S -I 'foo/?.txt'
114 114 M foo/y.txt
115 115 $ hg status -S -I '**/?.txt'
116 116 M foo/bar/z.txt
117 117 M foo/y.txt
118 118 $ hg diff --nodates -S -I '**/?.txt'
119 119 diff -r d254738c5f5e foo/y.txt
120 120 --- a/foo/y.txt
121 121 +++ b/foo/y.txt
122 122 @@ -1,2 +1,3 @@
123 123 y1
124 124 y2
125 125 +y3
126 126 diff -r 9647f22de499 foo/bar/z.txt
127 127 --- a/foo/bar/z.txt
128 128 +++ b/foo/bar/z.txt
129 129 @@ -1,2 +1,3 @@
130 130 z1
131 131 z2
132 132 +z3
133 133
134 134 Status from within a subdirectory:
135 135
136 136 $ mkdir dir
137 137 $ cd dir
138 138 $ echo a1 > a.txt
139 139 $ hg status -S
140 140 M foo/bar/z.txt
141 141 M foo/y.txt
142 142 ? dir/a.txt
143 143 $ hg diff --nodates -S
144 144 diff -r d254738c5f5e foo/y.txt
145 145 --- a/foo/y.txt
146 146 +++ b/foo/y.txt
147 147 @@ -1,2 +1,3 @@
148 148 y1
149 149 y2
150 150 +y3
151 151 diff -r 9647f22de499 foo/bar/z.txt
152 152 --- a/foo/bar/z.txt
153 153 +++ b/foo/bar/z.txt
154 154 @@ -1,2 +1,3 @@
155 155 z1
156 156 z2
157 157 +z3
158 158
159 159 Status with relative path:
160 160
161 161 $ hg status -S ..
162 162 M ../foo/bar/z.txt
163 163 M ../foo/y.txt
164 164 ? a.txt
165 165
166 166 XXX: filtering lfilesrepo.status() in 3.3-rc causes these files to be listed as
167 167 added instead of modified.
168 168 $ hg status -S .. --config extensions.largefiles=
169 169 M ../foo/bar/z.txt
170 170 M ../foo/y.txt
171 171 ? a.txt
172 172
173 173 $ hg diff --nodates -S ..
174 174 diff -r d254738c5f5e foo/y.txt
175 175 --- a/foo/y.txt
176 176 +++ b/foo/y.txt
177 177 @@ -1,2 +1,3 @@
178 178 y1
179 179 y2
180 180 +y3
181 181 diff -r 9647f22de499 foo/bar/z.txt
182 182 --- a/foo/bar/z.txt
183 183 +++ b/foo/bar/z.txt
184 184 @@ -1,2 +1,3 @@
185 185 z1
186 186 z2
187 187 +z3
188 188 $ cd ..
189 189
190 190 Cleanup and final commit:
191 191
192 192 $ rm -r dir
193 193 $ hg commit --subrepos -m 2-3-2
194 194 committing subrepository foo
195 195 committing subrepository foo/bar (glob)
196 196
197 197 Test explicit path commands within subrepos: add/forget
198 198 $ echo z1 > foo/bar/z2.txt
199 199 $ hg status -S
200 200 ? foo/bar/z2.txt
201 201 $ hg add foo/bar/z2.txt
202 202 $ hg status -S
203 203 A foo/bar/z2.txt
204 204 $ hg forget foo/bar/z2.txt
205 205 $ hg status -S
206 206 ? foo/bar/z2.txt
207 207 $ hg forget foo/bar/z2.txt
208 208 not removing foo/bar/z2.txt: file is already untracked (glob)
209 209 [1]
210 210 $ hg status -S
211 211 ? foo/bar/z2.txt
212 212 $ rm foo/bar/z2.txt
213 213
214 214 Log with the relationships between repo and its subrepo:
215 215
216 216 $ hg log --template '{rev}:{node|short} {desc}\n'
217 217 2:1326fa26d0c0 2-3-2
218 218 1:4b3c9ff4f66b 1-2-1
219 219 0:23376cbba0d8 0-0-0
220 220
221 221 $ hg -R foo log --template '{rev}:{node|short} {desc}\n'
222 222 3:65903cebad86 2-3-2
223 223 2:d254738c5f5e 0-2-1
224 224 1:8629ce7dcc39 0-1-0
225 225 0:af048e97ade2 0-0-0
226 226
227 227 $ hg -R foo/bar log --template '{rev}:{node|short} {desc}\n'
228 228 2:31ecbdafd357 2-3-2
229 229 1:9647f22de499 0-1-1
230 230 0:4904098473f9 0-0-0
231 231
232 232 Status between revisions:
233 233
234 234 $ hg status -S
235 235 $ hg status -S --rev 0:1
236 236 M .hgsubstate
237 237 M foo/.hgsubstate
238 238 M foo/bar/z.txt
239 239 M foo/y.txt
240 240 $ hg diff --nodates -S -I '**/?.txt' --rev 0:1
241 241 diff -r af048e97ade2 -r d254738c5f5e foo/y.txt
242 242 --- a/foo/y.txt
243 243 +++ b/foo/y.txt
244 244 @@ -1,1 +1,2 @@
245 245 y1
246 246 +y2
247 247 diff -r 4904098473f9 -r 9647f22de499 foo/bar/z.txt
248 248 --- a/foo/bar/z.txt
249 249 +++ b/foo/bar/z.txt
250 250 @@ -1,1 +1,2 @@
251 251 z1
252 252 +z2
253 253
254 254 Enable progress extension for archive tests:
255 255
256 256 $ cp $HGRCPATH $HGRCPATH.no-progress
257 257 $ cat >> $HGRCPATH <<EOF
258 258 > [extensions]
259 259 > progress =
260 260 > [progress]
261 261 > assume-tty = 1
262 262 > delay = 0
263 263 > # set changedelay really large so we don't see nested topics
264 264 > changedelay = 30000
265 265 > format = topic bar number
266 266 > refresh = 0
267 267 > width = 60
268 268 > EOF
269 269
270 270 Test archiving to a directory tree (the doubled lines in the output
271 271 only show up in the test output, not in real usage):
272 272
273 273 $ hg archive --subrepos ../archive
274 274 \r (no-eol) (esc)
275 275 archiving [ ] 0/3\r (no-eol) (esc)
276 276 archiving [=============> ] 1/3\r (no-eol) (esc)
277 277 archiving [===========================> ] 2/3\r (no-eol) (esc)
278 278 archiving [==========================================>] 3/3\r (no-eol) (esc)
279 279 \r (no-eol) (esc)
280 280 \r (no-eol) (esc)
281 281 archiving (foo) [ ] 0/3\r (no-eol) (esc)
282 282 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
283 283 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
284 284 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
285 285 \r (no-eol) (esc)
286 286 \r (no-eol) (esc)
287 archiving (foo/bar) [ ] 0/1\r (no-eol) (esc)
288 archiving (foo/bar) [================================>] 1/1\r (no-eol) (esc)
287 archiving (foo/bar) [ ] 0/1\r (no-eol) (glob) (esc)
288 archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)
289 289 \r (no-eol) (esc)
290 290 $ find ../archive | sort
291 291 ../archive
292 292 ../archive/.hg_archival.txt
293 293 ../archive/.hgsub
294 294 ../archive/.hgsubstate
295 295 ../archive/foo
296 296 ../archive/foo/.hgsub
297 297 ../archive/foo/.hgsubstate
298 298 ../archive/foo/bar
299 299 ../archive/foo/bar/z.txt
300 300 ../archive/foo/y.txt
301 301 ../archive/x.txt
302 302
303 303 Test archiving to zip file (unzip output is unstable):
304 304
305 305 $ hg archive --subrepos --prefix '.' ../archive.zip
306 306 \r (no-eol) (esc)
307 307 archiving [ ] 0/3\r (no-eol) (esc)
308 308 archiving [=============> ] 1/3\r (no-eol) (esc)
309 309 archiving [===========================> ] 2/3\r (no-eol) (esc)
310 310 archiving [==========================================>] 3/3\r (no-eol) (esc)
311 311 \r (no-eol) (esc)
312 312 \r (no-eol) (esc)
313 313 archiving (foo) [ ] 0/3\r (no-eol) (esc)
314 314 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
315 315 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
316 316 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
317 317 \r (no-eol) (esc)
318 318 \r (no-eol) (esc)
319 archiving (foo/bar) [ ] 0/1\r (no-eol) (esc)
320 archiving (foo/bar) [================================>] 1/1\r (no-eol) (esc)
319 archiving (foo/bar) [ ] 0/1\r (no-eol) (glob) (esc)
320 archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)
321 321 \r (no-eol) (esc)
322 322
323 323 (unzip date formating is unstable, we do not care about it and glob it out)
324 324
325 325 $ unzip -l ../archive.zip
326 326 Archive: ../archive.zip
327 327 Length Date Time Name
328 328 --------- ---------- ----- ----
329 329 172 ?????????? 00:00 .hg_archival.txt (glob)
330 330 10 ?????????? 00:00 .hgsub (glob)
331 331 45 ?????????? 00:00 .hgsubstate (glob)
332 332 3 ?????????? 00:00 x.txt (glob)
333 333 10 ?????????? 00:00 foo/.hgsub (glob)
334 334 45 ?????????? 00:00 foo/.hgsubstate (glob)
335 335 9 ?????????? 00:00 foo/y.txt (glob)
336 336 9 ?????????? 00:00 foo/bar/z.txt (glob)
337 337 --------- -------
338 338 303 8 files
339 339
340 340 Test archiving a revision that references a subrepo that is not yet
341 341 cloned:
342 342
343 343 #if hardlink
344 344 $ hg clone -U . ../empty
345 345 \r (no-eol) (esc)
346 346 linking [ <=> ] 1\r (no-eol) (esc)
347 347 linking [ <=> ] 2\r (no-eol) (esc)
348 348 linking [ <=> ] 3\r (no-eol) (esc)
349 349 linking [ <=> ] 4\r (no-eol) (esc)
350 350 linking [ <=> ] 5\r (no-eol) (esc)
351 351 linking [ <=> ] 6\r (no-eol) (esc)
352 352 linking [ <=> ] 7\r (no-eol) (esc)
353 353 linking [ <=> ] 8\r (no-eol) (esc)
354 354 \r (no-eol) (esc)
355 355 #else
356 356 $ hg clone -U . ../empty
357 357 \r (no-eol) (esc)
358 358 linking [ <=> ] 1 (no-eol)
359 359 #endif
360 360
361 361 $ cd ../empty
362 362 #if hardlink
363 363 $ hg archive --subrepos -r tip --prefix './' ../archive.tar.gz
364 364 \r (no-eol) (esc)
365 365 archiving [ ] 0/3\r (no-eol) (esc)
366 366 archiving [=============> ] 1/3\r (no-eol) (esc)
367 367 archiving [===========================> ] 2/3\r (no-eol) (esc)
368 368 archiving [==========================================>] 3/3\r (no-eol) (esc)
369 369 \r (no-eol) (esc)
370 370 \r (no-eol) (esc)
371 371 linking [ <=> ] 1\r (no-eol) (esc)
372 372 linking [ <=> ] 2\r (no-eol) (esc)
373 373 linking [ <=> ] 3\r (no-eol) (esc)
374 374 linking [ <=> ] 4\r (no-eol) (esc)
375 375 linking [ <=> ] 5\r (no-eol) (esc)
376 376 linking [ <=> ] 6\r (no-eol) (esc)
377 377 linking [ <=> ] 7\r (no-eol) (esc)
378 378 linking [ <=> ] 8\r (no-eol) (esc)
379 379 \r (no-eol) (esc)
380 380 \r (no-eol) (esc)
381 381 archiving (foo) [ ] 0/3\r (no-eol) (esc)
382 382 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
383 383 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
384 384 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
385 385 \r (no-eol) (esc)
386 386 \r (no-eol) (esc)
387 387 linking [ <=> ] 1\r (no-eol) (esc)
388 388 linking [ <=> ] 2\r (no-eol) (esc)
389 389 linking [ <=> ] 3\r (no-eol) (esc)
390 390 linking [ <=> ] 4\r (no-eol) (esc)
391 391 linking [ <=> ] 5\r (no-eol) (esc)
392 392 linking [ <=> ] 6\r (no-eol) (esc)
393 393 \r (no-eol) (esc)
394 394 \r (no-eol) (esc)
395 archiving (foo/bar) [ ] 0/1\r (no-eol) (esc)
396 archiving (foo/bar) [================================>] 1/1\r (no-eol) (esc)
395 archiving (foo/bar) [ ] 0/1\r (no-eol) (glob) (esc)
396 archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)
397 397 \r (no-eol) (esc)
398 398 cloning subrepo foo from $TESTTMP/repo/foo
399 399 cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
400 400 #else
401 401 Note there's a slight output glitch on non-hardlink systems: the last
402 402 "linking" progress topic never gets closed, leading to slight output corruption on that platform.
403 403 $ hg archive --subrepos -r tip --prefix './' ../archive.tar.gz
404 404 \r (no-eol) (esc)
405 405 archiving [ ] 0/3\r (no-eol) (esc)
406 406 archiving [=============> ] 1/3\r (no-eol) (esc)
407 407 archiving [===========================> ] 2/3\r (no-eol) (esc)
408 408 archiving [==========================================>] 3/3\r (no-eol) (esc)
409 409 \r (no-eol) (esc)
410 410 \r (no-eol) (esc)
411 411 linking [ <=> ] 1\r (no-eol) (esc)
412 412 \r (no-eol) (esc)
413 413 \r (no-eol) (esc)
414 414 linking [ <=> ] 1cloning subrepo foo from $TESTTMP/repo/foo
415 415 cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
416 416 #endif
417 417
418 418 Archive + subrepos uses '/' for all component separators
419 419
420 420 $ tar -tzf ../archive.tar.gz | sort
421 421 .hg_archival.txt
422 422 .hgsub
423 423 .hgsubstate
424 424 foo/.hgsub
425 425 foo/.hgsubstate
426 426 foo/bar/z.txt
427 427 foo/y.txt
428 428 x.txt
429 429
430 430 The newly cloned subrepos contain no working copy:
431 431
432 432 $ hg -R foo summary
433 433 parent: -1:000000000000 (no revision checked out)
434 434 branch: default
435 435 commit: (clean)
436 436 update: 4 new changesets (update)
437 437
438 438 Disable progress extension and cleanup:
439 439
440 440 $ mv $HGRCPATH.no-progress $HGRCPATH
441 441
442 442 Test archiving when there is a directory in the way for a subrepo
443 443 created by archive:
444 444
445 445 $ hg clone -U . ../almost-empty
446 446 $ cd ../almost-empty
447 447 $ mkdir foo
448 448 $ echo f > foo/f
449 449 $ hg archive --subrepos -r tip archive
450 450 cloning subrepo foo from $TESTTMP/empty/foo
451 451 abort: destination '$TESTTMP/almost-empty/foo' is not empty (in subrepo foo) (glob)
452 452 [255]
453 453
454 454 Clone and test outgoing:
455 455
456 456 $ cd ..
457 457 $ hg clone repo repo2
458 458 updating to branch default
459 459 cloning subrepo foo from $TESTTMP/repo/foo
460 460 cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
461 461 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
462 462 $ cd repo2
463 463 $ hg outgoing -S
464 464 comparing with $TESTTMP/repo (glob)
465 465 searching for changes
466 466 no changes found
467 467 comparing with $TESTTMP/repo/foo
468 468 searching for changes
469 469 no changes found
470 470 comparing with $TESTTMP/repo/foo/bar
471 471 searching for changes
472 472 no changes found
473 473 [1]
474 474
475 475 Make nested change:
476 476
477 477 $ echo y4 >> foo/y.txt
478 478 $ hg diff --nodates -S
479 479 diff -r 65903cebad86 foo/y.txt
480 480 --- a/foo/y.txt
481 481 +++ b/foo/y.txt
482 482 @@ -1,3 +1,4 @@
483 483 y1
484 484 y2
485 485 y3
486 486 +y4
487 487 $ hg commit --subrepos -m 3-4-2
488 488 committing subrepository foo
489 489 $ hg outgoing -S
490 490 comparing with $TESTTMP/repo (glob)
491 491 searching for changes
492 492 changeset: 3:2655b8ecc4ee
493 493 tag: tip
494 494 user: test
495 495 date: Thu Jan 01 00:00:00 1970 +0000
496 496 summary: 3-4-2
497 497
498 498 comparing with $TESTTMP/repo/foo
499 499 searching for changes
500 500 changeset: 4:e96193d6cb36
501 501 tag: tip
502 502 user: test
503 503 date: Thu Jan 01 00:00:00 1970 +0000
504 504 summary: 3-4-2
505 505
506 506 comparing with $TESTTMP/repo/foo/bar
507 507 searching for changes
508 508 no changes found
509 509
510 510
511 511 Switch to original repo and setup default path:
512 512
513 513 $ cd ../repo
514 514 $ echo '[paths]' >> .hg/hgrc
515 515 $ echo 'default = ../repo2' >> .hg/hgrc
516 516
517 517 Test incoming:
518 518
519 519 $ hg incoming -S
520 520 comparing with $TESTTMP/repo2 (glob)
521 521 searching for changes
522 522 changeset: 3:2655b8ecc4ee
523 523 tag: tip
524 524 user: test
525 525 date: Thu Jan 01 00:00:00 1970 +0000
526 526 summary: 3-4-2
527 527
528 528 comparing with $TESTTMP/repo2/foo
529 529 searching for changes
530 530 changeset: 4:e96193d6cb36
531 531 tag: tip
532 532 user: test
533 533 date: Thu Jan 01 00:00:00 1970 +0000
534 534 summary: 3-4-2
535 535
536 536 comparing with $TESTTMP/repo2/foo/bar
537 537 searching for changes
538 538 no changes found
539 539
540 540 $ hg incoming -S --bundle incoming.hg
541 541 abort: cannot combine --bundle and --subrepos
542 542 [255]
543 543
544 544 Test missing subrepo:
545 545
546 546 $ rm -r foo
547 547 $ hg status -S
548 548 warning: error "unknown revision '65903cebad86f1a84bd4f1134f62fa7dcb7a1c98'" in subrepository "foo"
549 549
550 550 Issue2619: IndexError: list index out of range on hg add with subrepos
551 551 The subrepo must sorts after the explicit filename.
552 552
553 553 $ cd ..
554 554 $ hg init test
555 555 $ cd test
556 556 $ hg init x
557 557 $ echo abc > abc.txt
558 558 $ hg ci -Am "abc"
559 559 adding abc.txt
560 560 $ echo "x = x" >> .hgsub
561 561 $ hg add .hgsub
562 562 $ touch a x/a
563 563 $ hg add a x/a
564 564
565 565 $ hg ci -Sm "added x"
566 566 committing subrepository x
567 567 $ echo abc > x/a
568 568 $ hg revert --rev '.^' "set:subrepo('glob:x*')"
569 569 abort: subrepository 'x' does not exist in 25ac2c9b3180!
570 570 [255]
571 571
572 572 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now