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.

joel 2016-05-11 02:29 UTC merge-renames
Commit 8bf221e5345bf2d9f9fd02ac7c4404d80acca75b
--- src/merge.c
+++ src/merge.c
@@ -354,10 +354,15 @@
354354
}
355355
}
356356
pivot_set_primary(mid);
357357
pivot_set_secondary(vid);
358358
nid = pivot_find(1);
359
+ if( nid!=pid ){
360
+ pivot_set_primary(nid);
361
+ pivot_set_secondary(pid);
362
+ nid = pivot_find(1);
363
+ }
359364
}
360365
if( backoutFlag ){
361366
int t = pid;
362367
pid = mid;
363368
mid = t;
364369
--- 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
--- test/merge_renames.test
+++ test/merge_renames.test
@@ -421,10 +421,58 @@
421421
test_file_contents merge_renames-11-2 f2 "line\nline3\nline4"
422422
fossil revert
423423
fossil merge --baseline p2 b
424424
test_status_list merge_renames-11-3 $RESULT {MERGE f1}
425425
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"
426474
427475
######################################
428476
#
429477
# Tests for troubles not specifically linked with renames but that I'd like to
430478
# write:
431479
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button