Mercurial > hg
comparison tests/test-rename.t @ 12098:12108d7f2ce1
tests: unify test-rename
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Mon, 30 Aug 2010 12:58:43 +0900 |
parents | tests/test-rename@4484a7b661f2 |
children | 4c94b6d0fb1c |
comparison
equal
deleted
inserted
replaced
12097:389c215885c5 | 12098:12108d7f2ce1 |
---|---|
1 $ hg init | |
2 $ mkdir d1 d1/d11 d2 | |
3 $ echo d1/a > d1/a | |
4 $ echo d1/ba > d1/ba | |
5 $ echo d1/a1 > d1/d11/a1 | |
6 $ echo d1/b > d1/b | |
7 $ echo d2/b > d2/b | |
8 $ hg add d1/a d1/b d1/ba d1/d11/a1 d2/b | |
9 $ hg commit -m "1" -d "1000000 0" | |
10 | |
11 rename a single file | |
12 | |
13 $ hg rename d1/d11/a1 d2/c | |
14 $ hg sum | |
15 parent: 0:6f9914c7a010 tip | |
16 1 | |
17 branch: default | |
18 commit: 1 renamed | |
19 update: (current) | |
20 $ hg status -C | |
21 A d2/c | |
22 d1/d11/a1 | |
23 R d1/d11/a1 | |
24 $ hg update -C | |
25 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
26 $ rm d2/c | |
27 | |
28 rename --after a single file | |
29 | |
30 $ mv d1/d11/a1 d2/c | |
31 $ hg rename --after d1/d11/a1 d2/c | |
32 $ hg status -C | |
33 A d2/c | |
34 d1/d11/a1 | |
35 R d1/d11/a1 | |
36 $ hg update -C | |
37 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
38 $ rm d2/c | |
39 | |
40 rename --after a single file when src and tgt already tracked | |
41 | |
42 $ mv d1/d11/a1 d2/c | |
43 $ hg addrem -s 0 | |
44 removing d1/d11/a1 | |
45 adding d2/c | |
46 $ hg rename --after d1/d11/a1 d2/c | |
47 $ hg status -C | |
48 A d2/c | |
49 d1/d11/a1 | |
50 R d1/d11/a1 | |
51 $ hg update -C | |
52 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
53 $ rm d2/c | |
54 | |
55 rename --after a single file to a nonexistant target filename | |
56 | |
57 $ hg rename --after d1/a dummy | |
58 d1/a: not recording move - dummy does not exist | |
59 | |
60 move a single file to an existing directory | |
61 | |
62 $ hg rename d1/d11/a1 d2 | |
63 $ hg status -C | |
64 A d2/a1 | |
65 d1/d11/a1 | |
66 R d1/d11/a1 | |
67 $ hg update -C | |
68 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
69 $ rm d2/a1 | |
70 | |
71 move --after a single file to an existing directory | |
72 | |
73 $ mv d1/d11/a1 d2 | |
74 $ hg rename --after d1/d11/a1 d2 | |
75 $ hg status -C | |
76 A d2/a1 | |
77 d1/d11/a1 | |
78 R d1/d11/a1 | |
79 $ hg update -C | |
80 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
81 $ rm d2/a1 | |
82 | |
83 rename a file using a relative path | |
84 | |
85 $ (cd d1/d11; hg rename ../../d2/b e) | |
86 $ hg status -C | |
87 A d1/d11/e | |
88 d2/b | |
89 R d2/b | |
90 $ hg update -C | |
91 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
92 $ rm d1/d11/e | |
93 | |
94 rename --after a file using a relative path | |
95 | |
96 $ (cd d1/d11; mv ../../d2/b e; hg rename --after ../../d2/b e) | |
97 $ hg status -C | |
98 A d1/d11/e | |
99 d2/b | |
100 R d2/b | |
101 $ hg update -C | |
102 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
103 $ rm d1/d11/e | |
104 | |
105 rename directory d1 as d3 | |
106 | |
107 $ hg rename d1/ d3 | |
108 moving d1/a to d3/a | |
109 moving d1/b to d3/b | |
110 moving d1/ba to d3/ba | |
111 moving d1/d11/a1 to d3/d11/a1 | |
112 $ hg status -C | |
113 A d3/a | |
114 d1/a | |
115 A d3/b | |
116 d1/b | |
117 A d3/ba | |
118 d1/ba | |
119 A d3/d11/a1 | |
120 d1/d11/a1 | |
121 R d1/a | |
122 R d1/b | |
123 R d1/ba | |
124 R d1/d11/a1 | |
125 $ hg update -C | |
126 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
127 $ rm -rf d3 | |
128 | |
129 rename --after directory d1 as d3 | |
130 | |
131 $ mv d1 d3 | |
132 $ hg rename --after d1 d3 | |
133 moving d1/a to d3/a | |
134 moving d1/b to d3/b | |
135 moving d1/ba to d3/ba | |
136 moving d1/d11/a1 to d3/d11/a1 | |
137 $ hg status -C | |
138 A d3/a | |
139 d1/a | |
140 A d3/b | |
141 d1/b | |
142 A d3/ba | |
143 d1/ba | |
144 A d3/d11/a1 | |
145 d1/d11/a1 | |
146 R d1/a | |
147 R d1/b | |
148 R d1/ba | |
149 R d1/d11/a1 | |
150 $ hg update -C | |
151 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
152 $ rm -rf d3 | |
153 | |
154 move a directory using a relative path | |
155 | |
156 $ (cd d2; mkdir d3; hg rename ../d1/d11 d3) | |
157 moving ../d1/d11/a1 to d3/d11/a1 | |
158 $ hg status -C | |
159 A d2/d3/d11/a1 | |
160 d1/d11/a1 | |
161 R d1/d11/a1 | |
162 $ hg update -C | |
163 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
164 $ rm -rf d2/d3 | |
165 | |
166 move --after a directory using a relative path | |
167 | |
168 $ (cd d2; mkdir d3; mv ../d1/d11 d3; hg rename --after ../d1/d11 d3) | |
169 moving ../d1/d11/a1 to d3/d11/a1 | |
170 $ hg status -C | |
171 A d2/d3/d11/a1 | |
172 d1/d11/a1 | |
173 R d1/d11/a1 | |
174 $ hg update -C | |
175 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
176 $ rm -rf d2/d3 | |
177 | |
178 move directory d1/d11 to an existing directory d2 (removes empty d1) | |
179 | |
180 $ hg rename d1/d11/ d2 | |
181 moving d1/d11/a1 to d2/d11/a1 | |
182 $ hg status -C | |
183 A d2/d11/a1 | |
184 d1/d11/a1 | |
185 R d1/d11/a1 | |
186 $ hg update -C | |
187 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
188 $ rm -rf d2/d11 | |
189 | |
190 move directories d1 and d2 to a new directory d3 | |
191 | |
192 $ mkdir d3 | |
193 $ hg rename d1 d2 d3 | |
194 moving d1/a to d3/d1/a | |
195 moving d1/b to d3/d1/b | |
196 moving d1/ba to d3/d1/ba | |
197 moving d1/d11/a1 to d3/d1/d11/a1 | |
198 moving d2/b to d3/d2/b | |
199 $ hg status -C | |
200 A d3/d1/a | |
201 d1/a | |
202 A d3/d1/b | |
203 d1/b | |
204 A d3/d1/ba | |
205 d1/ba | |
206 A d3/d1/d11/a1 | |
207 d1/d11/a1 | |
208 A d3/d2/b | |
209 d2/b | |
210 R d1/a | |
211 R d1/b | |
212 R d1/ba | |
213 R d1/d11/a1 | |
214 R d2/b | |
215 $ hg update -C | |
216 5 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
217 $ rm -rf d3 | |
218 | |
219 move --after directories d1 and d2 to a new directory d3 | |
220 | |
221 $ mkdir d3 | |
222 $ mv d1 d2 d3 | |
223 $ hg rename --after d1 d2 d3 | |
224 moving d1/a to d3/d1/a | |
225 moving d1/b to d3/d1/b | |
226 moving d1/ba to d3/d1/ba | |
227 moving d1/d11/a1 to d3/d1/d11/a1 | |
228 moving d2/b to d3/d2/b | |
229 $ hg status -C | |
230 A d3/d1/a | |
231 d1/a | |
232 A d3/d1/b | |
233 d1/b | |
234 A d3/d1/ba | |
235 d1/ba | |
236 A d3/d1/d11/a1 | |
237 d1/d11/a1 | |
238 A d3/d2/b | |
239 d2/b | |
240 R d1/a | |
241 R d1/b | |
242 R d1/ba | |
243 R d1/d11/a1 | |
244 R d2/b | |
245 $ hg update -C | |
246 5 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
247 $ rm -rf d3 | |
248 | |
249 move everything under directory d1 to existing directory d2, do not | |
250 overwrite existing files (d2/b) | |
251 | |
252 $ hg rename d1/* d2 | |
253 d2/b: not overwriting - file exists | |
254 moving d1/d11/a1 to d2/d11/a1 | |
255 $ hg status -C | |
256 A d2/a | |
257 d1/a | |
258 A d2/ba | |
259 d1/ba | |
260 A d2/d11/a1 | |
261 d1/d11/a1 | |
262 R d1/a | |
263 R d1/ba | |
264 R d1/d11/a1 | |
265 $ diff -u d1/b d2/b | |
266 --- d1/b .* | |
267 \+\+\+ d2/b .* | |
268 @@ -1 +1 @@ | |
269 -d1/b | |
270 +d2/b | |
271 $ hg update -C | |
272 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
273 $ rm d2/a d2/ba d2/d11/a1 | |
274 | |
275 attempt to move one file into a non-existent directory | |
276 | |
277 $ hg rename d1/a dx/ | |
278 abort: destination dx/ is not a directory | |
279 $ hg status -C | |
280 $ hg update -C | |
281 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
282 | |
283 attempt to move potentially more than one file into a non-existent directory | |
284 | |
285 $ hg rename 'glob:d1/**' dx | |
286 abort: with multiple sources, destination must be an existing directory | |
287 | |
288 move every file under d1 to d2/d21 (glob) | |
289 | |
290 $ mkdir d2/d21 | |
291 $ hg rename 'glob:d1/**' d2/d21 | |
292 moving d1/a to d2/d21/a | |
293 moving d1/b to d2/d21/b | |
294 moving d1/ba to d2/d21/ba | |
295 moving d1/d11/a1 to d2/d21/a1 | |
296 $ hg status -C | |
297 A d2/d21/a | |
298 d1/a | |
299 A d2/d21/a1 | |
300 d1/d11/a1 | |
301 A d2/d21/b | |
302 d1/b | |
303 A d2/d21/ba | |
304 d1/ba | |
305 R d1/a | |
306 R d1/b | |
307 R d1/ba | |
308 R d1/d11/a1 | |
309 $ hg update -C | |
310 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
311 $ rm -rf d2/d21 | |
312 | |
313 move --after some files under d1 to d2/d21 (glob) | |
314 | |
315 $ mkdir d2/d21 | |
316 $ mv d1/a d1/d11/a1 d2/d21 | |
317 $ hg rename --after 'glob:d1/**' d2/d21 | |
318 moving d1/a to d2/d21/a | |
319 d1/b: not recording move - d2/d21/b does not exist | |
320 d1/ba: not recording move - d2/d21/ba does not exist | |
321 moving d1/d11/a1 to d2/d21/a1 | |
322 $ hg status -C | |
323 A d2/d21/a | |
324 d1/a | |
325 A d2/d21/a1 | |
326 d1/d11/a1 | |
327 R d1/a | |
328 R d1/d11/a1 | |
329 $ hg update -C | |
330 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
331 $ rm -rf d2/d21 | |
332 | |
333 move every file under d1 starting with an 'a' to d2/d21 (regexp) | |
334 | |
335 $ mkdir d2/d21 | |
336 $ hg rename 're:d1/([^a][^/]*/)*a.*' d2/d21 | |
337 moving d1/a to d2/d21/a | |
338 moving d1/d11/a1 to d2/d21/a1 | |
339 $ hg status -C | |
340 A d2/d21/a | |
341 d1/a | |
342 A d2/d21/a1 | |
343 d1/d11/a1 | |
344 R d1/a | |
345 R d1/d11/a1 | |
346 $ hg update -C | |
347 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
348 $ rm -rf d2/d21 | |
349 | |
350 attempt to overwrite an existing file | |
351 | |
352 $ echo "ca" > d1/ca | |
353 $ hg rename d1/ba d1/ca | |
354 d1/ca: not overwriting - file exists | |
355 $ hg status -C | |
356 ? d1/ca | |
357 $ hg update -C | |
358 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
359 | |
360 forced overwrite of an existing file | |
361 | |
362 $ echo "ca" > d1/ca | |
363 $ hg rename --force d1/ba d1/ca | |
364 $ hg status -C | |
365 A d1/ca | |
366 d1/ba | |
367 R d1/ba | |
368 $ hg update -C | |
369 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
370 $ rm d1/ca | |
371 | |
372 replace a symlink with a file | |
373 | |
374 $ ln -s ba d1/ca | |
375 $ hg rename --force d1/ba d1/ca | |
376 $ hg status -C | |
377 A d1/ca | |
378 d1/ba | |
379 R d1/ba | |
380 $ hg update -C | |
381 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
382 $ rm d1/ca | |
383 | |
384 do not copy more than one source file to the same destination file | |
385 | |
386 $ mkdir d3 | |
387 $ hg rename d1/* d2/* d3 | |
388 moving d1/d11/a1 to d3/d11/a1 | |
389 d3/b: not overwriting - d2/b collides with d1/b | |
390 $ hg status -C | |
391 A d3/a | |
392 d1/a | |
393 A d3/b | |
394 d1/b | |
395 A d3/ba | |
396 d1/ba | |
397 A d3/d11/a1 | |
398 d1/d11/a1 | |
399 R d1/a | |
400 R d1/b | |
401 R d1/ba | |
402 R d1/d11/a1 | |
403 $ hg update -C | |
404 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
405 $ rm -rf d3 | |
406 | |
407 move a whole subtree with \"hg rename .\" | |
408 | |
409 $ mkdir d3 | |
410 $ (cd d1; hg rename . ../d3) | |
411 moving a to ../d3/d1/a | |
412 moving b to ../d3/d1/b | |
413 moving ba to ../d3/d1/ba | |
414 moving d11/a1 to ../d3/d1/d11/a1 | |
415 $ hg status -C | |
416 A d3/d1/a | |
417 d1/a | |
418 A d3/d1/b | |
419 d1/b | |
420 A d3/d1/ba | |
421 d1/ba | |
422 A d3/d1/d11/a1 | |
423 d1/d11/a1 | |
424 R d1/a | |
425 R d1/b | |
426 R d1/ba | |
427 R d1/d11/a1 | |
428 $ hg update -C | |
429 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
430 $ rm -rf d3 | |
431 | |
432 move a whole subtree with \"hg rename --after .\" | |
433 | |
434 $ mkdir d3 | |
435 $ mv d1/* d3 | |
436 $ (cd d1; hg rename --after . ../d3) | |
437 moving a to ../d3/a | |
438 moving b to ../d3/b | |
439 moving ba to ../d3/ba | |
440 moving d11/a1 to ../d3/d11/a1 | |
441 $ hg status -C | |
442 A d3/a | |
443 d1/a | |
444 A d3/b | |
445 d1/b | |
446 A d3/ba | |
447 d1/ba | |
448 A d3/d11/a1 | |
449 d1/d11/a1 | |
450 R d1/a | |
451 R d1/b | |
452 R d1/ba | |
453 R d1/d11/a1 | |
454 $ hg update -C | |
455 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
456 $ rm -rf d3 | |
457 | |
458 move the parent tree with \"hg rename ..\" | |
459 | |
460 $ (cd d1/d11; hg rename .. ../../d3) | |
461 moving ../a to ../../d3/a | |
462 moving ../b to ../../d3/b | |
463 moving ../ba to ../../d3/ba | |
464 moving a1 to ../../d3/d11/a1 | |
465 $ hg status -C | |
466 A d3/a | |
467 d1/a | |
468 A d3/b | |
469 d1/b | |
470 A d3/ba | |
471 d1/ba | |
472 A d3/d11/a1 | |
473 d1/d11/a1 | |
474 R d1/a | |
475 R d1/b | |
476 R d1/ba | |
477 R d1/d11/a1 | |
478 $ hg update -C | |
479 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
480 $ rm -rf d3 | |
481 | |
482 skip removed files | |
483 | |
484 $ hg remove d1/b | |
485 $ hg rename d1 d3 | |
486 moving d1/a to d3/a | |
487 moving d1/ba to d3/ba | |
488 moving d1/d11/a1 to d3/d11/a1 | |
489 $ hg status -C | |
490 A d3/a | |
491 d1/a | |
492 A d3/ba | |
493 d1/ba | |
494 A d3/d11/a1 | |
495 d1/d11/a1 | |
496 R d1/a | |
497 R d1/b | |
498 R d1/ba | |
499 R d1/d11/a1 | |
500 $ hg update -C | |
501 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
502 $ rm -rf d3 | |
503 | |
504 transitive rename | |
505 | |
506 $ hg rename d1/b d1/bb | |
507 $ hg rename d1/bb d1/bc | |
508 $ hg status -C | |
509 A d1/bc | |
510 d1/b | |
511 R d1/b | |
512 $ hg update -C | |
513 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
514 $ rm d1/bc | |
515 | |
516 transitive rename --after | |
517 | |
518 $ hg rename d1/b d1/bb | |
519 $ mv d1/bb d1/bc | |
520 $ hg rename --after d1/bb d1/bc | |
521 $ hg status -C | |
522 A d1/bc | |
523 d1/b | |
524 R d1/b | |
525 $ hg update -C | |
526 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
527 $ rm d1/bc | |
528 | |
529 $ echo "# idempotent renames (d1/b -> d1/bb followed by d1/bb -> d1/b)" | |
530 # idempotent renames (d1/b -> d1/bb followed by d1/bb -> d1/b) | |
531 $ hg rename d1/b d1/bb | |
532 $ echo "some stuff added to d1/bb" >> d1/bb | |
533 $ hg rename d1/bb d1/b | |
534 $ hg status -C | |
535 M d1/b | |
536 $ hg update -C | |
537 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
538 | |
539 overwriting with renames (issue1959) | |
540 | |
541 $ hg rename d1/a d1/c | |
542 $ hg rename d1/b d1/a | |
543 $ hg status -C | |
544 A d1/a | |
545 d1/b | |
546 A d1/c | |
547 d1/a | |
548 R d1/b | |
549 $ hg diff --git | |
550 diff --git a/d1/b b/d1/a | |
551 rename from d1/b | |
552 rename to d1/a | |
553 diff --git a/d1/a b/d1/c | |
554 copy from d1/a | |
555 copy to d1/c | |
556 $ hg update -C | |
557 2 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
558 | |
559 check illegal path components | |
560 | |
561 $ hg rename d1/d11/a1 .hg/foo | |
562 abort: path contains illegal component: .hg/foo | |
563 $ hg status -C | |
564 $ hg rename d1/d11/a1 ../foo | |
565 abort: ../foo not under root | |
566 $ hg status -C | |
567 | |
568 $ mv d1/d11/a1 .hg/foo | |
569 $ hg rename --after d1/d11/a1 .hg/foo | |
570 abort: path contains illegal component: .hg/foo | |
571 $ hg status -C | |
572 ! d1/d11/a1 | |
573 $ hg update -C | |
574 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
575 $ rm .hg/foo | |
576 | |
577 $ hg rename d1/d11/a1 .hg | |
578 abort: path contains illegal component: .hg/a1 | |
579 $ hg status -C | |
580 $ hg rename d1/d11/a1 .. | |
581 abort: ../a1 not under root | |
582 $ hg status -C | |
583 | |
584 $ mv d1/d11/a1 .hg | |
585 $ hg rename --after d1/d11/a1 .hg | |
586 abort: path contains illegal component: .hg/a1 | |
587 $ hg status -C | |
588 ! d1/d11/a1 | |
589 $ hg update -C | |
590 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
591 $ rm .hg/a1 | |
592 | |
593 $ (cd d1/d11; hg rename ../../d2/b ../../.hg/foo) | |
594 abort: path contains illegal component: .hg/foo | |
595 $ hg status -C | |
596 $ (cd d1/d11; hg rename ../../d2/b ../../../foo) | |
597 abort: ../../../foo not under root | |
598 $ hg status -C | |
599 |