##// END OF EJS Templates
copies-tests: add a test with a rename overwriting another file...
marmoute -
r44943:890def17 default
parent child Browse files
Show More
@@ -1,541 +1,657 b''
1 1 =====================================================
2 2 Test Copy tracing for chain of copies involving merge
3 3 =====================================================
4 4
5 5 This test files covers copies/rename case for a chains of commit where merges
6 6 are involved. It cheks we do not have unwanted update of behavior and that the
7 7 different options to retrieve copies behave correctly.
8 8
9 9 Setup
10 10 =====
11 11
12 12 use git diff to see rename
13 13
14 14 $ cat << EOF >> $HGRCPATH
15 15 > [diff]
16 16 > git=yes
17 17 > [ui]
18 18 > logtemplate={rev} {desc}]\n
19 19 > EOF
20 20
21 21 $ hg init repo-chain
22 22 $ cd repo-chain
23 23
24 24 Add some linear rename initialy
25 25
26 26 $ touch a b h
27 27 $ hg ci -Am 'i-0 initial commit: a b h'
28 28 adding a
29 29 adding b
30 30 adding h
31 31 $ hg mv a c
32 32 $ hg ci -Am 'i-1: a -move-> c'
33 33 $ hg mv c d
34 34 $ hg ci -Am 'i-2: c -move-> d'
35 35 $ hg log -G
36 36 @ 2 i-2: c -move-> d]
37 37 |
38 38 o 1 i-1: a -move-> c]
39 39 |
40 40 o 0 i-0 initial commit: a b h]
41 41
42 42
43 43 And having another branch with renames on the other side
44 44
45 45 $ hg mv d e
46 46 $ hg ci -Am 'a-1: d -move-> e'
47 47 $ hg mv e f
48 48 $ hg ci -Am 'a-2: e -move-> f'
49 49 $ hg log -G --rev '::.'
50 50 @ 4 a-2: e -move-> f]
51 51 |
52 52 o 3 a-1: d -move-> e]
53 53 |
54 54 o 2 i-2: c -move-> d]
55 55 |
56 56 o 1 i-1: a -move-> c]
57 57 |
58 58 o 0 i-0 initial commit: a b h]
59 59
60 60
61 61 Have a branching with nothing on one side
62 62
63 63 $ hg up 'desc("i-2")'
64 64 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
65 65 $ echo foo > b
66 66 $ hg ci -m 'b-1: b update'
67 67 created new head
68 68 $ hg log -G --rev '::.'
69 69 @ 5 b-1: b update]
70 70 |
71 71 o 2 i-2: c -move-> d]
72 72 |
73 73 o 1 i-1: a -move-> c]
74 74 |
75 75 o 0 i-0 initial commit: a b h]
76 76
77 77
78 78
79 79 Merge the two branches we just defined (in both directions)
80 80 - one with change to an unrelated file
81 81 - one with renames in them
82 82
83 83 $ hg up 'desc("b-1")'
84 84 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
85 85 $ hg merge 'desc("a-2")'
86 86 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
87 87 (branch merge, don't forget to commit)
88 88 $ hg ci -m 'mBAm-0 simple merge - one way'
89 89 $ hg up 'desc("a-2")'
90 90 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
91 91 $ hg merge 'desc("b-1")'
92 92 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
93 93 (branch merge, don't forget to commit)
94 94 $ hg ci -m 'mABm-0 simple merge - the other way'
95 95 created new head
96 96 $ hg log -G --rev '::(desc("mABm")+desc("mBAm"))'
97 97 @ 7 mABm-0 simple merge - the other way]
98 98 |\
99 99 +---o 6 mBAm-0 simple merge - one way]
100 100 | |/
101 101 | o 5 b-1: b update]
102 102 | |
103 103 o | 4 a-2: e -move-> f]
104 104 | |
105 105 o | 3 a-1: d -move-> e]
106 106 |/
107 107 o 2 i-2: c -move-> d]
108 108 |
109 109 o 1 i-1: a -move-> c]
110 110 |
111 111 o 0 i-0 initial commit: a b h]
112 112
113 113
114 114 Create a branch that delete a file previous renamed
115 115
116 116 $ hg up 'desc("i-2")'
117 117 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
118 118 $ hg rm d
119 119 $ hg ci -m 'c-1 delete d'
120 120 created new head
121 121 $ hg log -G --rev '::.'
122 122 @ 8 c-1 delete d]
123 123 |
124 124 o 2 i-2: c -move-> d]
125 125 |
126 126 o 1 i-1: a -move-> c]
127 127 |
128 128 o 0 i-0 initial commit: a b h]
129 129
130 130
131 131 Merge:
132 132 - one with change to an unrelated file
133 133 - one deleting the change
134 134 and recreate an unrelated file after the merge
135 135
136 136 $ hg up 'desc("b-1")'
137 137 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
138 138 $ hg merge 'desc("c-1")'
139 139 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
140 140 (branch merge, don't forget to commit)
141 141 $ hg ci -m 'mBCm-0 simple merge - one way'
142 142 $ echo bar > d
143 143 $ hg add d
144 144 $ hg ci -m 'mBCm-1 re-add d'
145 145 $ hg up 'desc("c-1")'
146 146 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
147 147 $ hg merge 'desc("b-1")'
148 148 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
149 149 (branch merge, don't forget to commit)
150 150 $ hg ci -m 'mCBm-0 simple merge - the other way'
151 151 created new head
152 152 $ echo bar > d
153 153 $ hg add d
154 154 $ hg ci -m 'mCBm-1 re-add d'
155 155 $ hg log -G --rev '::(desc("mCBm")+desc("mBCm"))'
156 156 @ 12 mCBm-1 re-add d]
157 157 |
158 158 o 11 mCBm-0 simple merge - the other way]
159 159 |\
160 160 | | o 10 mBCm-1 re-add d]
161 161 | | |
162 162 +---o 9 mBCm-0 simple merge - one way]
163 163 | |/
164 164 | o 8 c-1 delete d]
165 165 | |
166 166 o | 5 b-1: b update]
167 167 |/
168 168 o 2 i-2: c -move-> d]
169 169 |
170 170 o 1 i-1: a -move-> c]
171 171 |
172 172 o 0 i-0 initial commit: a b h]
173 173
174 174
175 175 Create a branch that delete a file previous renamed and recreate it
176 176
177 177 $ hg up 'desc("i-2")'
178 178 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
179 179 $ hg rm d
180 180 $ hg ci -m 'd-1 delete d'
181 181 created new head
182 182 $ echo bar > d
183 183 $ hg add d
184 184 $ hg ci -m 'd-2 re-add d'
185 185 $ hg log -G --rev '::.'
186 186 @ 14 d-2 re-add d]
187 187 |
188 188 o 13 d-1 delete d]
189 189 |
190 190 o 2 i-2: c -move-> d]
191 191 |
192 192 o 1 i-1: a -move-> c]
193 193 |
194 194 o 0 i-0 initial commit: a b h]
195 195
196 196
197 197 Merge:
198 198 - one with change to an unrelated file
199 199 - one deleting and recreating the file
200 200
201 201 Note:
202 202 | In this case, the merge get conflicting information since on one side we have
203 203 | a "brand new" d. and one the other one we have "d renamed from c (itself
204 204 | renamed from c)".
205 205 |
206 206 | The current code arbitrarily pick one side
207 207
208 208 $ hg up 'desc("b-1")'
209 209 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
210 210 $ hg merge 'desc("d-2")'
211 211 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
212 212 (branch merge, don't forget to commit)
213 213 $ hg ci -m 'mBDm-0 simple merge - one way'
214 214 $ hg up 'desc("d-2")'
215 215 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
216 216 $ hg merge 'desc("b-1")'
217 217 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
218 218 (branch merge, don't forget to commit)
219 219 $ hg ci -m 'mDBm-0 simple merge - the other way'
220 220 created new head
221 221 $ hg log -G --rev '::(desc("mDBm")+desc("mBDm"))'
222 222 @ 16 mDBm-0 simple merge - the other way]
223 223 |\
224 224 +---o 15 mBDm-0 simple merge - one way]
225 225 | |/
226 226 | o 14 d-2 re-add d]
227 227 | |
228 228 | o 13 d-1 delete d]
229 229 | |
230 230 o | 5 b-1: b update]
231 231 |/
232 232 o 2 i-2: c -move-> d]
233 233 |
234 234 o 1 i-1: a -move-> c]
235 235 |
236 236 o 0 i-0 initial commit: a b h]
237 237
238 238
239 239 Having another branch renaming a different file to the same filename as another
240 240
241 241 $ hg up 'desc("i-2")'
242 242 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
243 243 $ hg mv b g
244 244 $ hg ci -m 'e-1 b -move-> g'
245 245 created new head
246 246 $ hg mv g f
247 247 $ hg ci -m 'e-2 g -move-> f'
248 248 $ hg log -G --rev '::.'
249 249 @ 18 e-2 g -move-> f]
250 250 |
251 251 o 17 e-1 b -move-> g]
252 252 |
253 253 o 2 i-2: c -move-> d]
254 254 |
255 255 o 1 i-1: a -move-> c]
256 256 |
257 257 o 0 i-0 initial commit: a b h]
258 258
259 259
260 260 Merge:
261 261 - the "e-" branch renaming b to f (through 'g')
262 262 - the "a-" branch renaming d to f (through e)
263 263
264 264 $ hg up 'desc("a-2")'
265 265 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
266 266 $ hg merge 'desc("e-2")'
267 267 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
268 268 (branch merge, don't forget to commit)
269 269 $ hg ci -m 'mAEm-0 simple merge - one way'
270 270 $ hg up 'desc("e-2")'
271 271 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
272 272 $ hg merge 'desc("a-2")'
273 273 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
274 274 (branch merge, don't forget to commit)
275 275 $ hg ci -m 'mEAm-0 simple merge - the other way'
276 276 created new head
277 277 $ hg log -G --rev '::(desc("mAEm")+desc("mEAm"))'
278 278 @ 20 mEAm-0 simple merge - the other way]
279 279 |\
280 280 +---o 19 mAEm-0 simple merge - one way]
281 281 | |/
282 282 | o 18 e-2 g -move-> f]
283 283 | |
284 284 | o 17 e-1 b -move-> g]
285 285 | |
286 286 o | 4 a-2: e -move-> f]
287 287 | |
288 288 o | 3 a-1: d -move-> e]
289 289 |/
290 290 o 2 i-2: c -move-> d]
291 291 |
292 292 o 1 i-1: a -move-> c]
293 293 |
294 294 o 0 i-0 initial commit: a b h]
295 295
296 296
297 297 Note:
298 298 | In this case, one of the merge wrongly record a merge while there is none.
299 299 | This lead to bad copy tracing information to be dug up.
300 300
301 301
302 Merge:
303 - one with change to an unrelated file (b)
304 - one overwriting a file (d) with a rename (from h to i to d)
305
306 $ hg up 'desc("i-2")'
307 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
308 $ hg mv h i
309 $ hg commit -m "f-1: rename h -> i"
310 created new head
311 $ hg mv --force i d
312 $ hg commit -m "f-2: rename i -> d"
313 $ hg debugindex d
314 rev linkrev nodeid p1 p2
315 0 2 01c2f5eabdc4 000000000000 000000000000
316 1 10 b004912a8510 000000000000 000000000000
317 2 15 0bb5445dc4d0 01c2f5eabdc4 b004912a8510
318 3 22 c72365ee036f 000000000000 000000000000
319 $ hg up 'desc("b-1")'
320 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
321 $ hg merge 'desc("f-2")'
322 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
323 (branch merge, don't forget to commit)
324 $ hg ci -m 'mBFm-0 simple merge - one way'
325 $ hg up 'desc("f-2")'
326 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
327 $ hg merge 'desc("b-1")'
328 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
329 (branch merge, don't forget to commit)
330 $ hg ci -m 'mFBm-0 simple merge - the other way'
331 created new head
332 $ hg log -G --rev '::(desc("mBFm")+desc("mFBm"))'
333 @ 24 mFBm-0 simple merge - the other way]
334 |\
335 +---o 23 mBFm-0 simple merge - one way]
336 | |/
337 | o 22 f-2: rename i -> d]
338 | |
339 | o 21 f-1: rename h -> i]
340 | |
341 o | 5 b-1: b update]
342 |/
343 o 2 i-2: c -move-> d]
344 |
345 o 1 i-1: a -move-> c]
346 |
347 o 0 i-0 initial commit: a b h]
348
349
350
302 351 Check results
303 352 =============
304 353
305 354 merging with unrelated change does not interfer wit the renames
306 355 ---------------------------------------------------------------
307 356
308 357 - rename on one side
309 358 - unrelated change on the other side
310 359
311 360 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mABm")'
312 361 A f
313 362 d
314 363 R d
315 364 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBAm")'
316 365 A f
317 366 d
318 367 R d
319 368 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mABm")'
320 369 M b
321 370 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mBAm")'
322 371 M b
323 372 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mABm")'
324 373 M b
325 374 A f
326 375 d
327 376 R d
328 377 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBAm")'
329 378 M b
330 379 A f
331 380 d
332 381 R d
333 382 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mABm")'
334 383 M b
335 384 A f
336 385 a
337 386 R a
338 387 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBAm")'
339 388 M b
340 389 A f
341 390 a
342 391 R a
343 392
344 393 merging with the side having a delete
345 394 -------------------------------------
346 395
347 396 case summary:
348 397 - one with change to an unrelated file
349 398 - one deleting the change
350 399 and recreate an unrelated file after the merge
351 400
352 401 checks:
353 402 - comparing from the merge
354 403
355 404 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-0")'
356 405 R d
357 406 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-0")'
358 407 R d
359 408 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-0")'
360 409 M b
361 410 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-0")'
362 411 M b
363 412 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-0")'
364 413 M b
365 414 R d
366 415 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-0")'
367 416 M b
368 417 R d
369 418 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-0")'
370 419 M b
371 420 R a
372 421 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-0")'
373 422 M b
374 423 R a
375 424
376 425 - comparing with the merge children re-adding the file
377 426
378 427 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-1")'
379 428 M d
380 429 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-1")'
381 430 M d
382 431 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-1")'
383 432 M b
384 433 A d
385 434 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-1")'
386 435 M b
387 436 A d
388 437 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-1")'
389 438 M b
390 439 M d
391 440 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-1")'
392 441 M b
393 442 M d
394 443 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-1")'
395 444 M b
396 445 A d
397 446 R a
398 447 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-1")'
399 448 M b
400 449 A d
401 450 R a
402 451
403 452 Comparing with a merge re-adding the file afterward
404 453 ---------------------------------------------------
405 454
406 455 Merge:
407 456 - one with change to an unrelated file
408 457 - one deleting and recreating the change
409 458
410 459 Note:
411 460 | In this case, one of the merge wrongly record a merge while there is none.
412 461 | This lead to bad copy tracing information to be dug up.
413 462
414 463 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBDm-0")'
415 464 M d
416 465 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mDBm-0")'
417 466 M d
418 467 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mBDm-0")'
419 468 M b
420 469 M d
421 470 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mDBm-0")'
422 471 M b
423 472 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBDm-0")'
424 473 M b
425 474 M d
426 475 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mDBm-0")'
427 476 M b
428 477 M d
429 478
430 479 The bugs makes recorded copy is different depending of where we started the merge from since
431 480
432 481 $ hg manifest --debug --rev 'desc("mBDm-0")' | grep '644 d'
433 482 0bb5445dc4d02f4e0d86cf16f9f3a411d0f17744 644 d
434 483 $ hg manifest --debug --rev 'desc("mDBm-0")' | grep '644 d'
435 484 b004912a8510032a0350a74daa2803dadfb00e12 644 d
436 485
437 486 The 0bb5445dc4d02f4e0d86cf16f9f3a411d0f17744 entry is wrong, since the file was
438 487 deleted on one side (then recreate) and untouched on the other side, no "merge"
439 488 has happened. The resulting `d` file is the untouched version from branch `D`,
440 489 not a merge.
441 490
442 491 $ hg manifest --debug --rev 'desc("d-2")' | grep '644 d'
443 492 b004912a8510032a0350a74daa2803dadfb00e12 644 d
444 493 $ hg manifest --debug --rev 'desc("b-1")' | grep '644 d'
445 494 01c2f5eabdc4ce2bdee42b5f86311955e6c8f573 644 d
446 495 $ hg debugindex d
447 496 rev linkrev nodeid p1 p2
448 497 0 2 01c2f5eabdc4 000000000000 000000000000
449 498 1 10 b004912a8510 000000000000 000000000000
450 499 2 15 0bb5445dc4d0 01c2f5eabdc4 b004912a8510
500 3 22 c72365ee036f 000000000000 000000000000
501 4 23 863d9bc49190 01c2f5eabdc4 c72365ee036f
451 502
452 503 (This `hg log` output if wrong, since no merge actually happened).
453 504
454 505 $ hg log -Gfr 'desc("mBDm-0")' d
455 506 o 15 mBDm-0 simple merge - one way]
456 507 |\
457 508 o : 14 d-2 re-add d]
458 509 :/
459 510 o 2 i-2: c -move-> d]
460 511 |
461 512 o 1 i-1: a -move-> c]
462 513 |
463 514 o 0 i-0 initial commit: a b h]
464 515
465 516
466 517 This `hg log` output is correct
467 518
468 519 $ hg log -Gfr 'desc("mDBm-0")' d
469 520 o 14 d-2 re-add d]
470 521 |
471 522 ~
472 523
473 524 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBDm-0")'
474 525 M b
475 526 A d
476 527 a
477 528 R a
478 529 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mDBm-0")'
479 530 M b
480 531 A d
481 532 R a
482 533
483 534 Comparing with a merge with colliding rename
484 535 --------------------------------------------
485 536
486 537 - the "e-" branch renaming b to f (through 'g')
487 538 - the "a-" branch renaming d to f (through e)
488 539
489 540 $ hg manifest --debug --rev 'desc("mAEm-0")' | grep '644 f'
490 541 eb806e34ef6be4c264effd5933d31004ad15a793 644 f
491 542 $ hg manifest --debug --rev 'desc("mEAm-0")' | grep '644 f'
492 543 eb806e34ef6be4c264effd5933d31004ad15a793 644 f
493 544 $ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
494 545 0dd616bc7ab1a111921d95d76f69cda5c2ac539c 644 f
495 546 $ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
496 547 6da5a2eecb9c833f830b67a4972366d49a9a142c 644 f
497 548 $ hg debugindex f
498 549 rev linkrev nodeid p1 p2
499 550 0 4 0dd616bc7ab1 000000000000 000000000000
500 551 1 18 6da5a2eecb9c 000000000000 000000000000
501 552 2 19 eb806e34ef6b 0dd616bc7ab1 6da5a2eecb9c
502 553 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mAEm-0")'
503 554 M f
504 555 R b
505 556 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mEAm-0")'
506 557 M f
507 558 R b
508 559 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mAEm-0")'
509 560 M f
510 561 R d
511 562 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mEAm-0")'
512 563 M f
513 564 R d
514 565 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("a-2")'
515 566 A f
516 567 d
517 568 R d
518 569 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("e-2")'
519 570 A f
520 571 b
521 572 R b
522 573 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mAEm-0")'
523 574 A f
524 575 d
525 576 R b
526 577 R d
527 578 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mEAm-0")'
528 579 A f
529 580 d
530 581 R b
531 582 R d
532 583 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAEm-0")'
533 584 A f
534 585 a
535 586 R a
536 587 R b
537 588 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEAm-0")'
538 589 A f
539 590 a
540 591 R a
541 592 R b
593
594 Merge:
595 - one with change to an unrelated file (b)
596 - one overwriting a file (d) with a rename (from h to i to d)
597
598 The overwriting should take over. However, the behavior is currently buggy
599
600 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBFm-0")'
601 M b
602 A d
603 a (true !)
604 h (false !)
605 R a
606 R h
607 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFBm-0")'
608 M b
609 A d
610 h
611 R a
612 R h
613 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBFm-0")'
614 M d
615 R h
616 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mBFm-0")'
617 M b
618 M d
619 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mBFm-0")'
620 M b
621 M d
622 R i
623 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mFBm-0")'
624 M d
625 R h
626 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mFBm-0")'
627 M b
628 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mFBm-0")'
629 M b
630 M d
631 R i
632
633 The following graphlog is wrong, the "a -> c -> d" chain was overwritten and should not appear.
634
635 $ hg log -Gfr 'desc("mBFm-0")' d
636 o 23 mBFm-0 simple merge - one way]
637 |\
638 o : 22 f-2: rename i -> d]
639 | :
640 o : 21 f-1: rename h -> i]
641 :/
642 o 2 i-2: c -move-> d]
643 |
644 o 1 i-1: a -move-> c]
645 |
646 o 0 i-0 initial commit: a b h]
647
648
649 The following output is correct.
650
651 $ hg log -Gfr 'desc("mFBm-0")' d
652 o 22 f-2: rename i -> d]
653 |
654 o 21 f-1: rename h -> i]
655 :
656 o 0 i-0 initial commit: a b h]
657
General Comments 0
You need to be logged in to leave comments. Login now