##// END OF EJS Templates
merge: when rename was made on both sides, use ancestor as merge base...
Martin von Zweigbergk -
r44714:b4057d00 default
parent child Browse files
Show More
@@ -537,10 +537,7 b' def _checksinglesidecopies('
537 return
537 return
538 # modified on side 2
538 # modified on side 2
539 for dst in dsts1:
539 for dst in dsts1:
540 if dst not in m2:
540 copy[dst] = src
541 # dst not added on side 2 (handle as regular
542 # "both created" case in manifestmerge otherwise)
543 copy[dst] = src
544
541
545
542
546 class branch_copies(object):
543 class branch_copies(object):
@@ -206,57 +206,31 b' modify x and rename y to z on the other '
206 # Depending on which side they pick, we should take that rename and get
206 # Depending on which side they pick, we should take that rename and get
207 # the changes to the source from the other side. The unchanged file should
207 # the changes to the source from the other side. The unchanged file should
208 # remain.
208 # remain.
209 # we should not get the prompts about modify/delete conflicts
210 $ hg merge --debug 1 -t :merge3
209 $ hg merge --debug 1 -t :merge3
211 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
210 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
212 on local side:
211 on local side:
213 src: 'y' -> dst: 'z'
212 src: 'y' -> dst: 'z' *
214 on remote side:
213 on remote side:
215 src: 'x' -> dst: 'z'
214 src: 'x' -> dst: 'z' *
216 checking for directory renames
215 checking for directory renames
217 resolving manifests
216 resolving manifests
218 branchmerge: True, force: False, partial: False
217 branchmerge: True, force: False, partial: False
219 ancestor: 5151c134577e, local: 07fcbc9a74ed+, remote: f21419739508
218 ancestor: 5151c134577e, local: 07fcbc9a74ed+, remote: f21419739508
220 preserving x for resolve of x
221 preserving z for resolve of z
219 preserving z for resolve of z
222 starting 4 threads for background file closing (?)
220 starting 4 threads for background file closing (?)
223 x: prompt changed/deleted -> m (premerge)
221 z: both renamed from y -> m (premerge)
224 picked tool ':prompt' for x (binary False symlink False changedelete True)
225 file 'x' was deleted in other [merge rev] but was modified in local [working copy].
226 You can use (c)hanged version, (d)elete, or leave (u)nresolved.
227 What do you want to do? u
228 y: prompt deleted/changed -> m (premerge)
229 picked tool ':prompt' for y (binary False symlink False changedelete True)
230 file 'y' was deleted in local [working copy] but was modified in other [merge rev].
231 You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
232 What do you want to do? u
233 z: both created -> m (premerge)
234 picked tool ':merge3' for z (binary False symlink False changedelete False)
222 picked tool ':merge3' for z (binary False symlink False changedelete False)
235 merging z
223 merging z
236 my z@07fcbc9a74ed+ other z@f21419739508 ancestor z@000000000000
224 my z@07fcbc9a74ed+ other z@f21419739508 ancestor y@5151c134577e
237 z: both created -> m (merge)
225 premerge successful
238 picked tool ':merge3' for z (binary False symlink False changedelete False)
226 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
239 my z@07fcbc9a74ed+ other z@f21419739508 ancestor z@000000000000
227 (branch merge, don't forget to commit)
240 warning: conflicts while merging z! (edit, then use 'hg resolve --mark')
241 0 files updated, 0 files merged, 0 files removed, 3 files unresolved
242 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
243 [1]
244 $ ls
228 $ ls
245 x
229 x
246 y
247 z
230 z
248 z.orig
249 $ cat x
231 $ cat x
250 x
232 x
251 foo
233 foo
252 $ cat y
253 y
254 foo
255 # 'z' should have had the added 'foo' line
234 # 'z' should have had the added 'foo' line
256 $ cat z
235 $ cat z
257 <<<<<<< working copy: 07fcbc9a74ed - test: modify x, rename y to z
258 y
259 ||||||| base
260 =======
261 x
236 x
262 >>>>>>> merge rev: f21419739508 - test: modify y, rename x to z
@@ -529,7 +529,7 b' m "um a c" "um x c" " " "10 do merg'
529 --------------
529 --------------
530 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
530 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
531 on local side:
531 on local side:
532 src: 'a' -> dst: 'b'
532 src: 'a' -> dst: 'b' *
533 checking for directory renames
533 checking for directory renames
534 resolving manifests
534 resolving manifests
535 branchmerge: True, force: False, partial: False
535 branchmerge: True, force: False, partial: False
@@ -538,19 +538,15 b' m "um a c" "um x c" " " "10 do merg'
538 preserving rev for resolve of rev
538 preserving rev for resolve of rev
539 a: remote is newer -> g
539 a: remote is newer -> g
540 getting a
540 getting a
541 b: both created -> m (premerge)
541 b: both renamed from a -> m (premerge)
542 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
542 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
543 merging b
543 merging b
544 my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
544 my b@86a2aa42fc76+ other b@8dbce441892a ancestor a@924404dff337
545 premerge successful
545 rev: versions differ -> m (premerge)
546 rev: versions differ -> m (premerge)
546 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
547 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
547 merging rev
548 merging rev
548 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
549 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
549 b: both created -> m (merge)
550 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
551 my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
552 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
553 merge tool returned: 0
554 rev: versions differ -> m (merge)
550 rev: versions differ -> m (merge)
555 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
551 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
556 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
552 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
@@ -611,7 +607,7 b' m "um a c" "um x c" " " "10 do merg'
611 --------------
607 --------------
612 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
608 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
613 on local side:
609 on local side:
614 src: 'a' -> dst: 'b'
610 src: 'a' -> dst: 'b' *
615 checking for directory renames
611 checking for directory renames
616 resolving manifests
612 resolving manifests
617 branchmerge: True, force: False, partial: False
613 branchmerge: True, force: False, partial: False
@@ -620,19 +616,15 b' m "um a c" "um x c" " " "10 do merg'
620 preserving rev for resolve of rev
616 preserving rev for resolve of rev
621 a: remote is newer -> g
617 a: remote is newer -> g
622 getting a
618 getting a
623 b: both created -> m (premerge)
619 b: both renamed from a -> m (premerge)
624 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
620 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
625 merging b
621 merging b
626 my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
622 my b@86a2aa42fc76+ other b@8dbce441892a ancestor a@924404dff337
623 premerge successful
627 rev: versions differ -> m (premerge)
624 rev: versions differ -> m (premerge)
628 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
625 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
629 merging rev
626 merging rev
630 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
627 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
631 b: both created -> m (merge)
632 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
633 my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
634 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
635 merge tool returned: 0
636 rev: versions differ -> m (merge)
628 rev: versions differ -> m (merge)
637 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
629 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
638 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
630 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
@@ -652,7 +644,7 b' m "um a c" "um x c" " " "10 do merg'
652 --------------
644 --------------
653 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
645 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
654 on remote side:
646 on remote side:
655 src: 'a' -> dst: 'b'
647 src: 'a' -> dst: 'b' *
656 checking for directory renames
648 checking for directory renames
657 resolving manifests
649 resolving manifests
658 branchmerge: True, force: False, partial: False
650 branchmerge: True, force: False, partial: False
@@ -660,19 +652,15 b' m "um a c" "um x c" " " "10 do merg'
660 preserving b for resolve of b
652 preserving b for resolve of b
661 preserving rev for resolve of rev
653 preserving rev for resolve of rev
662 starting 4 threads for background file closing (?)
654 starting 4 threads for background file closing (?)
663 b: both created -> m (premerge)
655 b: both renamed from a -> m (premerge)
664 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
656 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
665 merging b
657 merging b
666 my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000
658 my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor a@924404dff337
659 premerge successful
667 rev: versions differ -> m (premerge)
660 rev: versions differ -> m (premerge)
668 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
661 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
669 merging rev
662 merging rev
670 my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
663 my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
671 b: both created -> m (merge)
672 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
673 my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000
674 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
675 merge tool returned: 0
676 rev: versions differ -> m (merge)
664 rev: versions differ -> m (merge)
677 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
665 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
678 my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
666 my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
@@ -692,7 +680,7 b' m "um a c" "um x c" " " "10 do merg'
692 --------------
680 --------------
693 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
681 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
694 on local side:
682 on local side:
695 src: 'a' -> dst: 'b'
683 src: 'a' -> dst: 'b' *
696 checking for directory renames
684 checking for directory renames
697 resolving manifests
685 resolving manifests
698 branchmerge: True, force: False, partial: False
686 branchmerge: True, force: False, partial: False
@@ -700,35 +688,24 b' m "um a c" "um x c" " " "10 do merg'
700 preserving b for resolve of b
688 preserving b for resolve of b
701 preserving rev for resolve of rev
689 preserving rev for resolve of rev
702 starting 4 threads for background file closing (?)
690 starting 4 threads for background file closing (?)
703 a: prompt deleted/changed -> m (premerge)
691 b: both renamed from a -> m (premerge)
704 picked tool ':prompt' for a (binary False symlink False changedelete True)
705 file 'a' was deleted in local [working copy] but was modified in other [merge rev].
706 You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
707 What do you want to do? u
708 b: both created -> m (premerge)
709 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
692 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
710 merging b
693 merging b
711 my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000
694 my b@02963e448370+ other b@8dbce441892a ancestor a@924404dff337
695 premerge successful
712 rev: versions differ -> m (premerge)
696 rev: versions differ -> m (premerge)
713 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
697 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
714 merging rev
698 merging rev
715 my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
699 my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
716 b: both created -> m (merge)
717 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
718 my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000
719 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
720 merge tool returned: 0
721 rev: versions differ -> m (merge)
700 rev: versions differ -> m (merge)
722 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
701 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
723 my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
702 my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
724 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
703 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
725 merge tool returned: 0
704 merge tool returned: 0
726 0 files updated, 2 files merged, 0 files removed, 1 files unresolved
705 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
727 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
706 (branch merge, don't forget to commit)
728 --------------
707 --------------
729 M a
730 M b
708 M b
731 abort: unresolved merge conflicts (see 'hg help resolve')
732 --------------
709 --------------
733
710
734 $ tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a"
711 $ tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a"
@@ -738,44 +715,33 b' m "um a c" "um x c" " " "10 do merg'
738 --------------
715 --------------
739 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
716 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
740 on remote side:
717 on remote side:
741 src: 'a' -> dst: 'b'
718 src: 'a' -> dst: 'b' *
742 checking for directory renames
719 checking for directory renames
743 resolving manifests
720 resolving manifests
744 branchmerge: True, force: False, partial: False
721 branchmerge: True, force: False, partial: False
745 ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a
722 ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a
746 preserving a for resolve of a
747 preserving b for resolve of b
723 preserving b for resolve of b
748 preserving rev for resolve of rev
724 preserving rev for resolve of rev
725 b: both renamed from a -> m (premerge)
749 starting 4 threads for background file closing (?)
726 starting 4 threads for background file closing (?)
750 a: prompt changed/deleted -> m (premerge)
751 picked tool ':prompt' for a (binary False symlink False changedelete True)
752 file 'a' was deleted in other [merge rev] but was modified in local [working copy].
753 You can use (c)hanged version, (d)elete, or leave (u)nresolved.
754 What do you want to do? u
755 b: both created -> m (premerge)
756 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
727 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
757 merging b
728 merging b
758 my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000
729 my b@0b76e65c8289+ other b@bdb19105162a ancestor a@924404dff337
730 premerge successful
759 rev: versions differ -> m (premerge)
731 rev: versions differ -> m (premerge)
760 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
732 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
761 merging rev
733 merging rev
762 my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
734 my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
763 b: both created -> m (merge)
764 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
765 my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000
766 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
767 merge tool returned: 0
768 rev: versions differ -> m (merge)
735 rev: versions differ -> m (merge)
769 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
736 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
770 my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
737 my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
771 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
738 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
772 merge tool returned: 0
739 merge tool returned: 0
773 0 files updated, 2 files merged, 0 files removed, 1 files unresolved
740 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
774 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
741 (branch merge, don't forget to commit)
775 --------------
742 --------------
776 M b
743 M b
777 C a
744 C a
778 abort: unresolved merge conflicts (see 'hg help resolve')
779 --------------
745 --------------
780
746
781 $ tm "up a " "um a b" " " "20 merge a and b to b, remove a"
747 $ tm "up a " "um a b" " " "20 merge a and b to b, remove a"
General Comments 0
You need to be logged in to leave comments. Login now