##// END OF EJS Templates
tests: port test-convert-filemap.t to simple store...
Gregory Szorc -
r37438:84e7d2d8 default
parent child Browse files
Show More
@@ -1,787 +1,796 b''
1 1
2 2 $ HGMERGE=true; export HGMERGE
3 3 $ echo '[extensions]' >> $HGRCPATH
4 4 $ echo 'convert =' >> $HGRCPATH
5 5 $ glog()
6 6 > {
7 7 > hg log -G --template '{rev} "{desc}" files: {files}\n' "$@"
8 8 > }
9 9 $ hg init source
10 10 $ cd source
11 11 $ echo foo > foo
12 12 $ echo baz > baz
13 13 $ mkdir -p dir/subdir
14 14 $ echo dir/file >> dir/file
15 15 $ echo dir/file2 >> dir/file2
16 16 $ echo dir/file3 >> dir/file3 # to be corrupted in rev 0
17 17 $ echo dir/subdir/file3 >> dir/subdir/file3
18 18 $ echo dir/subdir/file4 >> dir/subdir/file4
19 19 $ hg ci -d '0 0' -qAm '0: add foo baz dir/'
20 20 $ echo bar > bar
21 21 $ echo quux > quux
22 22 $ echo dir/file4 >> dir/file4 # to be corrupted in rev 1
23 23 $ hg copy foo copied
24 24 $ hg ci -d '1 0' -qAm '1: add bar quux; copy foo to copied'
25 25 $ echo >> foo
26 26 $ hg ci -d '2 0' -m '2: change foo'
27 27 $ hg up -qC 1
28 28 $ echo >> bar
29 29 $ echo >> quux
30 30 $ hg ci -d '3 0' -m '3: change bar quux'
31 31 created new head
32 32 $ hg up -qC 2
33 33 $ hg merge -qr 3
34 34 $ echo >> bar
35 35 $ echo >> baz
36 36 $ hg ci -d '4 0' -m '4: first merge; change bar baz'
37 37 $ echo >> bar
38 38 $ echo 1 >> baz
39 39 $ echo >> quux
40 40 $ hg ci -d '5 0' -m '5: change bar baz quux'
41 41 $ hg up -qC 4
42 42 $ echo >> foo
43 43 $ echo 2 >> baz
44 44 $ hg ci -d '6 0' -m '6: change foo baz'
45 45 created new head
46 46 $ hg up -qC 5
47 47 $ hg merge -qr 6
48 48 $ echo >> bar
49 49 $ hg ci -d '7 0' -m '7: second merge; change bar'
50 50 $ echo >> foo
51 51 $ hg ci -m '8: change foo'
52 52 $ glog
53 53 @ 8 "8: change foo" files: foo
54 54 |
55 55 o 7 "7: second merge; change bar" files: bar baz
56 56 |\
57 57 | o 6 "6: change foo baz" files: baz foo
58 58 | |
59 59 o | 5 "5: change bar baz quux" files: bar baz quux
60 60 |/
61 61 o 4 "4: first merge; change bar baz" files: bar baz
62 62 |\
63 63 | o 3 "3: change bar quux" files: bar quux
64 64 | |
65 65 o | 2 "2: change foo" files: foo
66 66 |/
67 67 o 1 "1: add bar quux; copy foo to copied" files: bar copied dir/file4 quux
68 68 |
69 69 o 0 "0: add foo baz dir/" files: baz dir/file dir/file2 dir/file3 dir/subdir/file3 dir/subdir/file4 foo
70 70
71 71
72 72 final file versions in this repo:
73 73
74 74 $ hg manifest --debug
75 75 9463f52fe115e377cf2878d4fc548117211063f2 644 bar
76 76 94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz
77 77 7711d36246cc83e61fb29cd6d4ef394c63f1ceaf 644 copied
78 78 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir/file
79 79 75e6d3f8328f5f6ace6bf10b98df793416a09dca 644 dir/file2
80 80 e96dce0bc6a217656a3a410e5e6bec2c4f42bf7c 644 dir/file3
81 81 6edd55f559cdce67132b12ca09e09cee08b60442 644 dir/file4
82 82 5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir/subdir/file3
83 83 57a1c1511590f3de52874adfa04effe8a77d64af 644 dir/subdir/file4
84 84 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
85 85 bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
86 86 $ hg debugrename copied
87 87 copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd
88 88
89 89 $ cd ..
90 90
91 91
92 92 Test interaction with startrev and verify that changing it is handled properly:
93 93
94 94 $ > empty
95 95 $ hg convert --filemap empty source movingstart --config convert.hg.startrev=3 -r4
96 96 initializing destination movingstart repository
97 97 scanning source...
98 98 sorting...
99 99 converting...
100 100 1 3: change bar quux
101 101 0 4: first merge; change bar baz
102 102 $ hg convert --filemap empty source movingstart
103 103 scanning source...
104 104 sorting...
105 105 converting...
106 106 3 5: change bar baz quux
107 107 2 6: change foo baz
108 108 1 7: second merge; change bar
109 109 warning: af455ce4166b3c9c88e6309c2b9332171dcea595 parent 61e22ca76c3b3e93df20338c4e02ce286898e825 is missing
110 110 warning: cf908b3eeedc301c9272ebae931da966d5b326c7 parent 59e1ab45c888289513b7354484dac8a88217beab is missing
111 111 0 8: change foo
112 112
113 113
114 114 splitrepo tests
115 115
116 116 $ splitrepo()
117 117 > {
118 118 > msg="$1"
119 119 > files="$2"
120 120 > opts=$3
121 121 > echo "% $files: $msg"
122 122 > prefix=`echo "$files" | sed -e 's/ /-/g'`
123 123 > fmap="$prefix.fmap"
124 124 > repo="$prefix.repo"
125 125 > for i in $files; do
126 126 > echo "include $i" >> "$fmap"
127 127 > done
128 128 > hg -q convert $opts --filemap "$fmap" --datesort source "$repo"
129 129 > hg up -q -R "$repo"
130 130 > glog -R "$repo"
131 131 > hg -R "$repo" manifest --debug
132 132 > }
133 133 $ splitrepo 'skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd' foo
134 134 % foo: skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd
135 135 @ 3 "8: change foo" files: foo
136 136 |
137 137 o 2 "6: change foo baz" files: foo
138 138 |
139 139 o 1 "2: change foo" files: foo
140 140 |
141 141 o 0 "0: add foo baz dir/" files: foo
142 142
143 143 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
144 144 $ splitrepo 'merges are not merges anymore' bar
145 145 % bar: merges are not merges anymore
146 146 @ 4 "7: second merge; change bar" files: bar
147 147 |
148 148 o 3 "5: change bar baz quux" files: bar
149 149 |
150 150 o 2 "4: first merge; change bar baz" files: bar
151 151 |
152 152 o 1 "3: change bar quux" files: bar
153 153 |
154 154 o 0 "1: add bar quux; copy foo to copied" files: bar
155 155
156 156 9463f52fe115e377cf2878d4fc548117211063f2 644 bar
157 157 $ splitrepo '1st merge is not a merge anymore; 2nd still is' baz
158 158 % baz: 1st merge is not a merge anymore; 2nd still is
159 159 @ 4 "7: second merge; change bar" files: baz
160 160 |\
161 161 | o 3 "6: change foo baz" files: baz
162 162 | |
163 163 o | 2 "5: change bar baz quux" files: baz
164 164 |/
165 165 o 1 "4: first merge; change bar baz" files: baz
166 166 |
167 167 o 0 "0: add foo baz dir/" files: baz
168 168
169 169 94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz
170 170 $ splitrepo 'we add additional merges when they are interesting' 'foo quux'
171 171 % foo quux: we add additional merges when they are interesting
172 172 @ 8 "8: change foo" files: foo
173 173 |
174 174 o 7 "7: second merge; change bar" files:
175 175 |\
176 176 | o 6 "6: change foo baz" files: foo
177 177 | |
178 178 o | 5 "5: change bar baz quux" files: quux
179 179 |/
180 180 o 4 "4: first merge; change bar baz" files:
181 181 |\
182 182 | o 3 "3: change bar quux" files: quux
183 183 | |
184 184 o | 2 "2: change foo" files: foo
185 185 |/
186 186 o 1 "1: add bar quux; copy foo to copied" files: quux
187 187 |
188 188 o 0 "0: add foo baz dir/" files: foo
189 189
190 190 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
191 191 bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
192 192 $ splitrepo 'partial conversion' 'bar quux' '-r 3'
193 193 % bar quux: partial conversion
194 194 @ 1 "3: change bar quux" files: bar quux
195 195 |
196 196 o 0 "1: add bar quux; copy foo to copied" files: bar quux
197 197
198 198 b79105bedc55102f394e90a789c9c380117c1b4a 644 bar
199 199 db0421cc6b685a458c8d86c7d5c004f94429ea23 644 quux
200 200 $ splitrepo 'complete the partial conversion' 'bar quux'
201 201 % bar quux: complete the partial conversion
202 202 @ 4 "7: second merge; change bar" files: bar
203 203 |
204 204 o 3 "5: change bar baz quux" files: bar quux
205 205 |
206 206 o 2 "4: first merge; change bar baz" files: bar
207 207 |
208 208 o 1 "3: change bar quux" files: bar quux
209 209 |
210 210 o 0 "1: add bar quux; copy foo to copied" files: bar quux
211 211
212 212 9463f52fe115e377cf2878d4fc548117211063f2 644 bar
213 213 bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
214 214 $ rm -r foo.repo
215 215 $ splitrepo 'partial conversion' 'foo' '-r 3'
216 216 % foo: partial conversion
217 217 @ 0 "0: add foo baz dir/" files: foo
218 218
219 219 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo
220 220 $ splitrepo 'complete the partial conversion' 'foo'
221 221 % foo: complete the partial conversion
222 222 @ 3 "8: change foo" files: foo
223 223 |
224 224 o 2 "6: change foo baz" files: foo
225 225 |
226 226 o 1 "2: change foo" files: foo
227 227 |
228 228 o 0 "0: add foo baz dir/" files: foo
229 229
230 230 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
231 231 $ splitrepo 'copied file; source not included in new repo' copied
232 232 % copied: copied file; source not included in new repo
233 233 @ 0 "1: add bar quux; copy foo to copied" files: copied
234 234
235 235 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 copied
236 236 $ hg --cwd copied.repo debugrename copied
237 237 copied not renamed
238 238 $ splitrepo 'copied file; source included in new repo' 'foo copied'
239 239 % foo copied: copied file; source included in new repo
240 240 @ 4 "8: change foo" files: foo
241 241 |
242 242 o 3 "6: change foo baz" files: foo
243 243 |
244 244 o 2 "2: change foo" files: foo
245 245 |
246 246 o 1 "1: add bar quux; copy foo to copied" files: copied
247 247 |
248 248 o 0 "0: add foo baz dir/" files: foo
249 249
250 250 7711d36246cc83e61fb29cd6d4ef394c63f1ceaf 644 copied
251 251 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
252 252 $ hg --cwd foo-copied.repo debugrename copied
253 253 copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd
254 254
255 255 verify the top level 'include .' if there is no other includes:
256 256
257 257 $ echo "exclude something" > default.fmap
258 258 $ hg convert -q --filemap default.fmap -r1 source dummydest2
259 259 $ hg -R dummydest2 log --template '{rev} {node|short} {desc|firstline}\n'
260 260 1 61e22ca76c3b 1: add bar quux; copy foo to copied
261 261 0 c085cf2ee7fe 0: add foo baz dir/
262 262
263 263 $ echo "include somethingelse" >> default.fmap
264 264 $ hg convert -q --filemap default.fmap -r1 source dummydest3
265 265 $ hg -R dummydest3 log --template '{rev} {node|short} {desc|firstline}\n'
266 266
267 267 $ echo "include ." >> default.fmap
268 268 $ hg convert -q --filemap default.fmap -r1 source dummydest4
269 269 $ hg -R dummydest4 log --template '{rev} {node|short} {desc|firstline}\n'
270 270 1 61e22ca76c3b 1: add bar quux; copy foo to copied
271 271 0 c085cf2ee7fe 0: add foo baz dir/
272 272
273 273 ensure that the filemap contains duplicated slashes (issue3612)
274 274
275 275 $ cat > renames.fmap <<EOF
276 276 > include dir
277 277 > exclude dir/file2
278 278 > rename dir dir2//dir3
279 279 > include foo
280 280 > include copied
281 281 > rename foo foo2/
282 282 > rename copied ./copied2
283 283 > exclude dir/subdir
284 284 > include dir/subdir/file3
285 285 > EOF
286 #if reporevlogstore
286 287 $ rm source/.hg/store/data/dir/file3.i
287 288 $ rm source/.hg/store/data/dir/file4.i
289 #endif
290 #if reposimplestore
291 $ rm -rf source/.hg/store/data/dir/file3
292 $ rm -rf source/.hg/store/data/dir/file4
293 #endif
288 294 $ hg -q convert --filemap renames.fmap --datesort source dummydest
289 abort: data/dir/file3.i@e96dce0bc6a2: no match found!
295 abort: data/dir/file3.i@e96dce0bc6a2: no match found! (reporevlogstore !)
296 abort: data/dir/file3/index@e96dce0bc6a2: no node! (reposimplestore !)
290 297 [255]
291 298 $ hg -q convert --filemap renames.fmap --datesort --config convert.hg.ignoreerrors=1 source renames.repo
292 ignoring: data/dir/file3.i@e96dce0bc6a2: no match found
293 ignoring: data/dir/file4.i@6edd55f559cd: no match found
299 ignoring: data/dir/file3.i@e96dce0bc6a2: no match found (reporevlogstore !)
300 ignoring: data/dir/file4.i@6edd55f559cd: no match found (reporevlogstore !)
301 ignoring: data/dir/file3/index@e96dce0bc6a2: no node (reposimplestore !)
302 ignoring: data/dir/file4/index@6edd55f559cd: no node (reposimplestore !)
294 303 $ hg up -q -R renames.repo
295 304 $ glog -R renames.repo
296 305 @ 4 "8: change foo" files: foo2
297 306 |
298 307 o 3 "6: change foo baz" files: foo2
299 308 |
300 309 o 2 "2: change foo" files: foo2
301 310 |
302 311 o 1 "1: add bar quux; copy foo to copied" files: copied2
303 312 |
304 313 o 0 "0: add foo baz dir/" files: dir2/dir3/file dir2/dir3/subdir/file3 foo2
305 314
306 315 $ hg -R renames.repo verify
307 316 checking changesets
308 317 checking manifests
309 318 crosschecking files in changesets and manifests
310 319 checking files
311 320 4 files, 5 changesets, 7 total revisions
312 321
313 322 $ hg -R renames.repo manifest --debug
314 323 d43feacba7a4f1f2080dde4a4b985bd8a0236d46 644 copied2
315 324 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2/dir3/file
316 325 5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir2/dir3/subdir/file3
317 326 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo2
318 327 $ hg --cwd renames.repo debugrename copied2
319 328 copied2 renamed from foo2:2ed2a3912a0b24502043eae84ee4b279c18b90dd
320 329
321 330 copied:
322 331
323 332 $ hg --cwd source cat copied
324 333 foo
325 334
326 335 copied2:
327 336
328 337 $ hg --cwd renames.repo cat copied2
329 338 foo
330 339
331 340 filemap errors
332 341
333 342 $ cat > errors.fmap <<EOF
334 343 > include dir/ # beware that comments changes error line numbers!
335 344 > exclude /dir
336 345 > rename dir//dir /dir//dir/ "out of sync"
337 346 > include
338 347 > EOF
339 348 $ hg -q convert --filemap errors.fmap source errors.repo
340 349 errors.fmap:3: superfluous / in include '/dir'
341 350 errors.fmap:3: superfluous / in rename '/dir'
342 351 errors.fmap:4: unknown directive 'out of sync'
343 352 errors.fmap:5: path to exclude is missing
344 353 abort: errors in filemap
345 354 [255]
346 355
347 356 test branch closing revision pruning if branch is pruned
348 357
349 358 $ hg init branchpruning
350 359 $ cd branchpruning
351 360 $ hg branch foo
352 361 marked working directory as branch foo
353 362 (branches are permanent and global, did you want a bookmark?)
354 363 $ echo a > a
355 364 $ hg ci -Am adda
356 365 adding a
357 366 $ hg ci --close-branch -m closefoo
358 367 $ hg up 0
359 368 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
360 369 $ hg branch empty
361 370 marked working directory as branch empty
362 371 (branches are permanent and global, did you want a bookmark?)
363 372 $ hg ci -m emptybranch
364 373 $ hg ci --close-branch -m closeempty
365 374 $ hg up 0
366 375 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
367 376 $ hg branch default
368 377 marked working directory as branch default
369 378 (branches are permanent and global, did you want a bookmark?)
370 379 $ echo b > b
371 380 $ hg ci -Am addb
372 381 adding b
373 382 $ hg ci --close-branch -m closedefault
374 383 $ cat > filemap <<EOF
375 384 > include b
376 385 > EOF
377 386 $ cd ..
378 387 $ hg convert branchpruning branchpruning-hg1
379 388 initializing destination branchpruning-hg1 repository
380 389 scanning source...
381 390 sorting...
382 391 converting...
383 392 5 adda
384 393 4 closefoo
385 394 3 emptybranch
386 395 2 closeempty
387 396 1 addb
388 397 0 closedefault
389 398 $ glog -R branchpruning-hg1
390 399 _ 5 "closedefault" files:
391 400 |
392 401 o 4 "addb" files: b
393 402 |
394 403 | _ 3 "closeempty" files:
395 404 | |
396 405 | o 2 "emptybranch" files:
397 406 |/
398 407 | _ 1 "closefoo" files:
399 408 |/
400 409 o 0 "adda" files: a
401 410
402 411
403 412 exercise incremental conversion at the same time
404 413
405 414 $ hg convert -r0 --filemap branchpruning/filemap branchpruning branchpruning-hg2
406 415 initializing destination branchpruning-hg2 repository
407 416 scanning source...
408 417 sorting...
409 418 converting...
410 419 0 adda
411 420 $ hg convert -r4 --filemap branchpruning/filemap branchpruning branchpruning-hg2
412 421 scanning source...
413 422 sorting...
414 423 converting...
415 424 0 addb
416 425 $ hg convert --filemap branchpruning/filemap branchpruning branchpruning-hg2
417 426 scanning source...
418 427 sorting...
419 428 converting...
420 429 3 closefoo
421 430 2 emptybranch
422 431 1 closeempty
423 432 0 closedefault
424 433 $ glog -R branchpruning-hg2
425 434 _ 1 "closedefault" files:
426 435 |
427 436 o 0 "addb" files: b
428 437
429 438
430 439 Test rebuilding of map with unknown revisions in shamap - it used to crash
431 440
432 441 $ cd branchpruning
433 442 $ hg up -r 2
434 443 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
435 444 $ hg merge 4
436 445 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
437 446 (branch merge, don't forget to commit)
438 447 $ hg ci -m 'merging something'
439 448 $ cd ..
440 449 $ echo "53792d18237d2b64971fa571936869156655338d 6d955580116e82c4b029bd30f321323bae71a7f0" >> branchpruning-hg2/.hg/shamap
441 450 $ hg convert --filemap branchpruning/filemap branchpruning branchpruning-hg2 --debug --config progress.debug=true
442 451 run hg source pre-conversion action
443 452 run hg sink pre-conversion action
444 453 scanning source...
445 454 scanning: 1 revisions
446 455 sorting...
447 456 converting...
448 457 0 merging something
449 458 source: 2503605b178fe50e8fbbb0e77b97939540aa8c87
450 459 converting: 0/1 revisions (0.00%)
451 460 unknown revmap source: 53792d18237d2b64971fa571936869156655338d
452 461 run hg sink post-conversion action
453 462 run hg source post-conversion action
454 463
455 464
456 465 filemap rename undoing revision rename
457 466
458 467 $ hg init renameundo
459 468 $ cd renameundo
460 469 $ echo 1 > a
461 470 $ echo 1 > c
462 471 $ hg ci -qAm add
463 472 $ hg mv -q a b/a
464 473 $ hg mv -q c b/c
465 474 $ hg ci -qm rename
466 475 $ echo 2 > b/a
467 476 $ echo 2 > b/c
468 477 $ hg ci -qm modify
469 478 $ cd ..
470 479
471 480 $ echo "rename b ." > renameundo.fmap
472 481 $ hg convert --filemap renameundo.fmap renameundo renameundo2
473 482 initializing destination renameundo2 repository
474 483 scanning source...
475 484 sorting...
476 485 converting...
477 486 2 add
478 487 1 rename
479 488 filtering out empty revision
480 489 repository tip rolled back to revision 0 (undo convert)
481 490 0 modify
482 491 $ glog -R renameundo2
483 492 o 1 "modify" files: a c
484 493 |
485 494 o 0 "add" files: a c
486 495
487 496
488 497
489 498 test merge parents/empty merges pruning
490 499
491 500 $ glog()
492 501 > {
493 502 > hg log -G --template '{rev}:{node|short}@{branch} "{desc}" files: {files}\n' "$@"
494 503 > }
495 504
496 505 test anonymous branch pruning
497 506
498 507 $ hg init anonymousbranch
499 508 $ cd anonymousbranch
500 509 $ echo a > a
501 510 $ echo b > b
502 511 $ hg ci -Am add
503 512 adding a
504 513 adding b
505 514 $ echo a >> a
506 515 $ hg ci -m changea
507 516 $ hg up 0
508 517 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
509 518 $ echo b >> b
510 519 $ hg ci -m changeb
511 520 created new head
512 521 $ hg up 1
513 522 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
514 523 $ hg merge
515 524 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
516 525 (branch merge, don't forget to commit)
517 526 $ hg ci -m merge
518 527 $ cd ..
519 528
520 529 $ cat > filemap <<EOF
521 530 > include a
522 531 > EOF
523 532 $ hg convert --filemap filemap anonymousbranch anonymousbranch-hg
524 533 initializing destination anonymousbranch-hg repository
525 534 scanning source...
526 535 sorting...
527 536 converting...
528 537 3 add
529 538 2 changea
530 539 1 changeb
531 540 0 merge
532 541 $ glog -R anonymousbranch
533 542 @ 3:c71d5201a498@default "merge" files:
534 543 |\
535 544 | o 2:607eb44b17f9@default "changeb" files: b
536 545 | |
537 546 o | 1:1f60ea617824@default "changea" files: a
538 547 |/
539 548 o 0:0146e6129113@default "add" files: a b
540 549
541 550 $ glog -R anonymousbranch-hg
542 551 o 1:cda818e7219b@default "changea" files: a
543 552 |
544 553 o 0:c334dc3be0da@default "add" files: a
545 554
546 555 $ cat anonymousbranch-hg/.hg/shamap
547 556 0146e6129113dba9ac90207cfdf2d7ed35257ae5 c334dc3be0daa2a4e9ce4d2e2bdcba40c09d4916
548 557 1f60ea61782421edf8d051ff4fcb61b330f26a4a cda818e7219b5f7f3fb9f49780054ed6a1905ec3
549 558 607eb44b17f9348cd5cbd26e16af87ba77b0b037 c334dc3be0daa2a4e9ce4d2e2bdcba40c09d4916
550 559 c71d5201a498b2658d105a6bf69d7a0df2649aea cda818e7219b5f7f3fb9f49780054ed6a1905ec3
551 560
552 561 $ cat > filemap <<EOF
553 562 > include b
554 563 > EOF
555 564 $ hg convert --filemap filemap anonymousbranch anonymousbranch-hg2
556 565 initializing destination anonymousbranch-hg2 repository
557 566 scanning source...
558 567 sorting...
559 568 converting...
560 569 3 add
561 570 2 changea
562 571 1 changeb
563 572 0 merge
564 573 $ glog -R anonymousbranch
565 574 @ 3:c71d5201a498@default "merge" files:
566 575 |\
567 576 | o 2:607eb44b17f9@default "changeb" files: b
568 577 | |
569 578 o | 1:1f60ea617824@default "changea" files: a
570 579 |/
571 580 o 0:0146e6129113@default "add" files: a b
572 581
573 582 $ glog -R anonymousbranch-hg2
574 583 o 1:62dd350b0df6@default "changeb" files: b
575 584 |
576 585 o 0:4b9ced861657@default "add" files: b
577 586
578 587 $ cat anonymousbranch-hg2/.hg/shamap
579 588 0146e6129113dba9ac90207cfdf2d7ed35257ae5 4b9ced86165703791653059a1db6ed864630a523
580 589 1f60ea61782421edf8d051ff4fcb61b330f26a4a 4b9ced86165703791653059a1db6ed864630a523
581 590 607eb44b17f9348cd5cbd26e16af87ba77b0b037 62dd350b0df695f7d2c82a02e0499b16fd790f22
582 591 c71d5201a498b2658d105a6bf69d7a0df2649aea 62dd350b0df695f7d2c82a02e0499b16fd790f22
583 592
584 593 test named branch pruning
585 594
586 595 $ hg init namedbranch
587 596 $ cd namedbranch
588 597 $ echo a > a
589 598 $ echo b > b
590 599 $ hg ci -Am add
591 600 adding a
592 601 adding b
593 602 $ echo a >> a
594 603 $ hg ci -m changea
595 604 $ hg up 0
596 605 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
597 606 $ hg branch foo
598 607 marked working directory as branch foo
599 608 (branches are permanent and global, did you want a bookmark?)
600 609 $ echo b >> b
601 610 $ hg ci -m changeb
602 611 $ hg up default
603 612 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
604 613 $ hg merge foo
605 614 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
606 615 (branch merge, don't forget to commit)
607 616 $ hg ci -m merge
608 617 $ cd ..
609 618
610 619 $ cat > filemap <<EOF
611 620 > include a
612 621 > EOF
613 622 $ hg convert --filemap filemap namedbranch namedbranch-hg
614 623 initializing destination namedbranch-hg repository
615 624 scanning source...
616 625 sorting...
617 626 converting...
618 627 3 add
619 628 2 changea
620 629 1 changeb
621 630 0 merge
622 631 $ glog -R namedbranch
623 632 @ 3:73899bcbe45c@default "merge" files:
624 633 |\
625 634 | o 2:8097982d19fc@foo "changeb" files: b
626 635 | |
627 636 o | 1:1f60ea617824@default "changea" files: a
628 637 |/
629 638 o 0:0146e6129113@default "add" files: a b
630 639
631 640 $ glog -R namedbranch-hg
632 641 o 1:cda818e7219b@default "changea" files: a
633 642 |
634 643 o 0:c334dc3be0da@default "add" files: a
635 644
636 645
637 646 $ cd namedbranch
638 647 $ hg --config extensions.mq= strip tip
639 648 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
640 649 saved backup bundle to $TESTTMP/namedbranch/.hg/strip-backup/73899bcbe45c-92adf160-backup.hg
641 650 $ hg up foo
642 651 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
643 652 $ hg merge default
644 653 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
645 654 (branch merge, don't forget to commit)
646 655 $ hg ci -m merge
647 656 $ cd ..
648 657
649 658 $ hg convert --filemap filemap namedbranch namedbranch-hg2
650 659 initializing destination namedbranch-hg2 repository
651 660 scanning source...
652 661 sorting...
653 662 converting...
654 663 3 add
655 664 2 changea
656 665 1 changeb
657 666 0 merge
658 667 $ glog -R namedbranch
659 668 @ 3:e1959de76e1b@foo "merge" files:
660 669 |\
661 670 | o 2:8097982d19fc@foo "changeb" files: b
662 671 | |
663 672 o | 1:1f60ea617824@default "changea" files: a
664 673 |/
665 674 o 0:0146e6129113@default "add" files: a b
666 675
667 676 $ glog -R namedbranch-hg2
668 677 o 2:dcf314454667@foo "merge" files:
669 678 |\
670 679 | o 1:cda818e7219b@default "changea" files: a
671 680 |/
672 681 o 0:c334dc3be0da@default "add" files: a
673 682
674 683 $ cd ..
675 684
676 685 test converting merges into a repo that contains other files
677 686
678 687 $ hg init merge-test1
679 688 $ cd merge-test1
680 689 $ touch a && hg commit -Aqm 'add a'
681 690 $ echo a > a && hg commit -Aqm 'edit a'
682 691 $ hg up -q 0
683 692 $ touch b && hg commit -Aqm 'add b'
684 693 $ hg merge -q 1 && hg commit -qm 'merge a & b'
685 694
686 695 $ cd ..
687 696 $ hg init merge-test2
688 697 $ cd merge-test2
689 698 $ mkdir converted
690 699 $ touch converted/a toberemoved && hg commit -Aqm 'add converted/a & toberemoved'
691 700 $ touch x && rm toberemoved && hg commit -Aqm 'add x & remove tobremoved'
692 701 $ cd ..
693 702 $ hg log -G -T '{shortest(node)} {desc}' -R merge-test1
694 703 @ 1191 merge a & b
695 704 |\
696 705 | o 9077 add b
697 706 | |
698 707 o | d19f edit a
699 708 |/
700 709 o ac82 add a
701 710
702 711 $ hg log -G -T '{shortest(node)} {desc}' -R merge-test2
703 712 @ 150e add x & remove tobremoved
704 713 |
705 714 o bbac add converted/a & toberemoved
706 715
707 716 - Build a shamap where the target converted/a is in on top of an unrelated
708 717 - change to 'x'. This simulates using convert to merge several repositories
709 718 - together.
710 719 $ cat >> merge-test2/.hg/shamap <<EOF
711 720 > $(hg -R merge-test1 log -r 0 -T '{node}') $(hg -R merge-test2 log -r 0 -T '{node}')
712 721 > $(hg -R merge-test1 log -r 1 -T '{node}') $(hg -R merge-test2 log -r 1 -T '{node}')
713 722 > EOF
714 723 $ cat >> merge-test-filemap <<EOF
715 724 > rename . converted/
716 725 > EOF
717 726 $ hg convert --filemap merge-test-filemap merge-test1 merge-test2 --traceback
718 727 scanning source...
719 728 sorting...
720 729 converting...
721 730 1 add b
722 731 0 merge a & b
723 732 $ hg -R merge-test2 manifest -r tip
724 733 converted/a
725 734 converted/b
726 735 x
727 736 $ hg -R merge-test2 log -G -T '{shortest(node)} {desc}\n{files % "- {file}\n"}\n'
728 737 o 6eaa merge a & b
729 738 |\ - converted/a
730 739 | | - toberemoved
731 740 | |
732 741 | o 2995 add b
733 742 | | - converted/b
734 743 | |
735 744 @ | 150e add x & remove tobremoved
736 745 |/ - toberemoved
737 746 | - x
738 747 |
739 748 o bbac add converted/a & toberemoved
740 749 - converted/a
741 750 - toberemoved
742 751
743 752 $ cd ..
744 753
745 754 Test case where cleanp2 contains a file that doesn't exist in p2 - for
746 755 example because filemap changed.
747 756
748 757 $ hg init cleanp2
749 758 $ cd cleanp2
750 759 $ touch f f1 f2 && hg ci -Aqm '0'
751 760 $ echo f1 > f1 && echo >> f && hg ci -m '1'
752 761 $ hg up -qr0 && echo f2 > f2 && echo >> f && hg ci -qm '2'
753 762 $ echo "include f" > filemap
754 763 $ hg convert --filemap filemap .
755 764 assuming destination .-hg
756 765 initializing destination .-hg repository
757 766 scanning source...
758 767 sorting...
759 768 converting...
760 769 2 0
761 770 1 1
762 771 0 2
763 772 $ hg merge && hg ci -qm '3'
764 773 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
765 774 (branch merge, don't forget to commit)
766 775 $ echo "include ." > filemap
767 776 $ hg convert --filemap filemap .
768 777 assuming destination .-hg
769 778 scanning source...
770 779 sorting...
771 780 converting...
772 781 0 3
773 782 $ hg -R .-hg log -G -T '{shortest(node)} {desc}\n{files % "- {file}\n"}\n'
774 783 o e9ed 3
775 784 |\
776 785 | o 33a0 2
777 786 | | - f
778 787 | |
779 788 o | f73e 1
780 789 |/ - f
781 790 |
782 791 o d681 0
783 792 - f
784 793
785 794 $ hg -R .-hg mani -r tip
786 795 f
787 796 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now