Fossil SCM
Ensure that N is also a first-parent ancestor of P for cases where P is not on the same branch as either V or M.
Commit
8bf221e5345bf2d9f9fd02ac7c4404d80acca75b
Parent
ec25471c506e37a…
2 files changed
+5
+48
+5
| --- src/merge.c | ||
| +++ src/merge.c | ||
| @@ -354,10 +354,15 @@ | ||
| 354 | 354 | } |
| 355 | 355 | } |
| 356 | 356 | pivot_set_primary(mid); |
| 357 | 357 | pivot_set_secondary(vid); |
| 358 | 358 | nid = pivot_find(1); |
| 359 | + if( nid!=pid ){ | |
| 360 | + pivot_set_primary(nid); | |
| 361 | + pivot_set_secondary(pid); | |
| 362 | + nid = pivot_find(1); | |
| 363 | + } | |
| 359 | 364 | } |
| 360 | 365 | if( backoutFlag ){ |
| 361 | 366 | int t = pid; |
| 362 | 367 | pid = mid; |
| 363 | 368 | mid = t; |
| 364 | 369 |
| --- src/merge.c | |
| +++ src/merge.c | |
| @@ -354,10 +354,15 @@ | |
| 354 | } |
| 355 | } |
| 356 | pivot_set_primary(mid); |
| 357 | pivot_set_secondary(vid); |
| 358 | nid = pivot_find(1); |
| 359 | } |
| 360 | if( backoutFlag ){ |
| 361 | int t = pid; |
| 362 | pid = mid; |
| 363 | mid = t; |
| 364 |
| --- src/merge.c | |
| +++ src/merge.c | |
| @@ -354,10 +354,15 @@ | |
| 354 | } |
| 355 | } |
| 356 | pivot_set_primary(mid); |
| 357 | pivot_set_secondary(vid); |
| 358 | nid = pivot_find(1); |
| 359 | if( nid!=pid ){ |
| 360 | pivot_set_primary(nid); |
| 361 | pivot_set_secondary(pid); |
| 362 | nid = pivot_find(1); |
| 363 | } |
| 364 | } |
| 365 | if( backoutFlag ){ |
| 366 | int t = pid; |
| 367 | pid = mid; |
| 368 | mid = t; |
| 369 |
+48
| --- test/merge_renames.test | ||
| +++ test/merge_renames.test | ||
| @@ -421,10 +421,58 @@ | ||
| 421 | 421 | test_file_contents merge_renames-11-2 f2 "line\nline3\nline4" |
| 422 | 422 | fossil revert |
| 423 | 423 | fossil merge --baseline p2 b |
| 424 | 424 | test_status_list merge_renames-11-3 $RESULT {MERGE f1} |
| 425 | 425 | test_file_contents merge_renames-11-4 f1 "line\nline4" |
| 426 | + | |
| 427 | +################################################################# | |
| 428 | +# Test 12 # | |
| 429 | +# Merge involving a pivot that isn't a first-parent ancestor # | |
| 430 | +# of either the checked-out commit or the commit being merged # | |
| 431 | +################################################################# | |
| 432 | + | |
| 433 | +test_setup | |
| 434 | + | |
| 435 | +write_file f1 "f1\n" | |
| 436 | +fossil add f1 | |
| 437 | +fossil commit -m "add f1" --tag n | |
| 438 | + | |
| 439 | +fossil mv --hard f1 f1n | |
| 440 | +fossil commit -m "f1 -> f1n" | |
| 441 | + | |
| 442 | +fossil mv --hard f1n f1v | |
| 443 | +write_file f1v "f1v\n" | |
| 444 | +fossil commit -b v -m "f1n -> f1v, edit f1v" | |
| 445 | + | |
| 446 | +fossil update trunk | |
| 447 | +fossil mv --hard f1n f1m | |
| 448 | +fossil commit -b m -m "f1n -> f1m" | |
| 449 | + | |
| 450 | +fossil update n | |
| 451 | +fossil mv --hard f1 f1p | |
| 452 | +write_file f1p "f1\np" | |
| 453 | +fossil commit -b p -m "f1 -> f1p, edit f1p" | |
| 454 | + | |
| 455 | +fossil update m | |
| 456 | +fossil merge p | |
| 457 | +test_status_list merge_renames-12-1 $RESULT {UPDATE f1m} | |
| 458 | +test_file_contents merge_renames-12-2 f1m "f1\np" | |
| 459 | +fossil commit -m "merge p" | |
| 460 | + | |
| 461 | +write_file f1m "f1\nm" | |
| 462 | +fossil commit -m "edit f1m" | |
| 463 | + | |
| 464 | +fossil update v | |
| 465 | +fossil merge p | |
| 466 | +test_status_list merge_renames-12-3 $RESULT {MERGE f1v} | |
| 467 | +test_file_contents merge_renames-12-4 f1v "f1v\np" | |
| 468 | +fossil commit -m "merge p" | |
| 469 | + | |
| 470 | +fossil merge m | |
| 471 | +test_status_list merge_renames-12-5 $RESULT {MERGE f1v} | |
| 472 | +test_file_contents merge_renames-12-6 f1v "f1v\nm" | |
| 473 | +fossil commit -m "merge m" | |
| 426 | 474 | |
| 427 | 475 | ###################################### |
| 428 | 476 | # |
| 429 | 477 | # Tests for troubles not specifically linked with renames but that I'd like to |
| 430 | 478 | # write: |
| 431 | 479 |
| --- test/merge_renames.test | |
| +++ test/merge_renames.test | |
| @@ -421,10 +421,58 @@ | |
| 421 | test_file_contents merge_renames-11-2 f2 "line\nline3\nline4" |
| 422 | fossil revert |
| 423 | fossil merge --baseline p2 b |
| 424 | test_status_list merge_renames-11-3 $RESULT {MERGE f1} |
| 425 | test_file_contents merge_renames-11-4 f1 "line\nline4" |
| 426 | |
| 427 | ###################################### |
| 428 | # |
| 429 | # Tests for troubles not specifically linked with renames but that I'd like to |
| 430 | # write: |
| 431 |
| --- test/merge_renames.test | |
| +++ test/merge_renames.test | |
| @@ -421,10 +421,58 @@ | |
| 421 | test_file_contents merge_renames-11-2 f2 "line\nline3\nline4" |
| 422 | fossil revert |
| 423 | fossil merge --baseline p2 b |
| 424 | test_status_list merge_renames-11-3 $RESULT {MERGE f1} |
| 425 | test_file_contents merge_renames-11-4 f1 "line\nline4" |
| 426 | |
| 427 | ################################################################# |
| 428 | # Test 12 # |
| 429 | # Merge involving a pivot that isn't a first-parent ancestor # |
| 430 | # of either the checked-out commit or the commit being merged # |
| 431 | ################################################################# |
| 432 | |
| 433 | test_setup |
| 434 | |
| 435 | write_file f1 "f1\n" |
| 436 | fossil add f1 |
| 437 | fossil commit -m "add f1" --tag n |
| 438 | |
| 439 | fossil mv --hard f1 f1n |
| 440 | fossil commit -m "f1 -> f1n" |
| 441 | |
| 442 | fossil mv --hard f1n f1v |
| 443 | write_file f1v "f1v\n" |
| 444 | fossil commit -b v -m "f1n -> f1v, edit f1v" |
| 445 | |
| 446 | fossil update trunk |
| 447 | fossil mv --hard f1n f1m |
| 448 | fossil commit -b m -m "f1n -> f1m" |
| 449 | |
| 450 | fossil update n |
| 451 | fossil mv --hard f1 f1p |
| 452 | write_file f1p "f1\np" |
| 453 | fossil commit -b p -m "f1 -> f1p, edit f1p" |
| 454 | |
| 455 | fossil update m |
| 456 | fossil merge p |
| 457 | test_status_list merge_renames-12-1 $RESULT {UPDATE f1m} |
| 458 | test_file_contents merge_renames-12-2 f1m "f1\np" |
| 459 | fossil commit -m "merge p" |
| 460 | |
| 461 | write_file f1m "f1\nm" |
| 462 | fossil commit -m "edit f1m" |
| 463 | |
| 464 | fossil update v |
| 465 | fossil merge p |
| 466 | test_status_list merge_renames-12-3 $RESULT {MERGE f1v} |
| 467 | test_file_contents merge_renames-12-4 f1v "f1v\np" |
| 468 | fossil commit -m "merge p" |
| 469 | |
| 470 | fossil merge m |
| 471 | test_status_list merge_renames-12-5 $RESULT {MERGE f1v} |
| 472 | test_file_contents merge_renames-12-6 f1v "f1v\nm" |
| 473 | fossil commit -m "merge m" |
| 474 | |
| 475 | ###################################### |
| 476 | # |
| 477 | # Tests for troubles not specifically linked with renames but that I'd like to |
| 478 | # write: |
| 479 |