Show More
@@ -786,7 +786,7 b' def driverconclude(repo, ms, wctx, label' | |||||
786 | return True |
|
786 | return True | |
787 |
|
787 | |||
788 | def manifestmerge(repo, wctx, p2, pa, branchmerge, force, matcher, |
|
788 | def manifestmerge(repo, wctx, p2, pa, branchmerge, force, matcher, | |
789 | acceptremote, followcopies): |
|
789 | acceptremote, followcopies, forcefulldiff=False): | |
790 | """ |
|
790 | """ | |
791 | Merge wctx and p2 with ancestor pa and generate merge action list |
|
791 | Merge wctx and p2 with ancestor pa and generate merge action list | |
792 |
|
792 | |||
@@ -821,6 +821,26 b' def manifestmerge(repo, wctx, p2, pa, br' | |||||
821 | if any(wctx.sub(s).dirty() for s in wctx.substate): |
|
821 | if any(wctx.sub(s).dirty() for s in wctx.substate): | |
822 | m1['.hgsubstate'] = modifiednodeid |
|
822 | m1['.hgsubstate'] = modifiednodeid | |
823 |
|
823 | |||
|
824 | # Don't use m2-vs-ma optimization if: | |||
|
825 | # - ma is the same as m1 or m2, which we're just going to diff again later | |||
|
826 | # - The matcher is set already, so we can't override it | |||
|
827 | # - The caller specifically asks for a full diff, which is useful during bid | |||
|
828 | # merge. | |||
|
829 | if (pa not in ([wctx, p2] + wctx.parents()) and | |||
|
830 | matcher is None and not forcefulldiff): | |||
|
831 | # Identify which files are relevant to the merge, so we can limit the | |||
|
832 | # total m1-vs-m2 diff to just those files. This has significant | |||
|
833 | # performance benefits in large repositories. | |||
|
834 | relevantfiles = set(ma.diff(m2).keys()) | |||
|
835 | ||||
|
836 | # For copied and moved files, we need to add the source file too. | |||
|
837 | for copykey, copyvalue in copy.iteritems(): | |||
|
838 | if copyvalue in relevantfiles: | |||
|
839 | relevantfiles.add(copykey) | |||
|
840 | for movedirkey in movewithdir.iterkeys(): | |||
|
841 | relevantfiles.add(movedirkey) | |||
|
842 | matcher = scmutil.matchfiles(repo, relevantfiles) | |||
|
843 | ||||
824 | diff = m1.diff(m2, match=matcher) |
|
844 | diff = m1.diff(m2, match=matcher) | |
825 |
|
845 | |||
826 | if matcher is None: |
|
846 | if matcher is None: | |
@@ -974,7 +994,7 b' def calculateupdates(repo, wctx, mctx, a' | |||||
974 | repo.ui.note(_('\ncalculating bids for ancestor %s\n') % ancestor) |
|
994 | repo.ui.note(_('\ncalculating bids for ancestor %s\n') % ancestor) | |
975 | actions, diverge1, renamedelete1 = manifestmerge( |
|
995 | actions, diverge1, renamedelete1 = manifestmerge( | |
976 | repo, wctx, mctx, ancestor, branchmerge, force, matcher, |
|
996 | repo, wctx, mctx, ancestor, branchmerge, force, matcher, | |
977 | acceptremote, followcopies) |
|
997 | acceptremote, followcopies, forcefulldiff=True) | |
978 | _checkunknownfiles(repo, wctx, mctx, force, actions, mergeforce) |
|
998 | _checkunknownfiles(repo, wctx, mctx, force, actions, mergeforce) | |
979 |
|
999 | |||
980 | # Track the shortest set of warning on the theory that bid |
|
1000 | # Track the shortest set of warning on the theory that bid |
@@ -186,7 +186,6 b' Graft out of order, skipping a merge and' | |||||
186 | ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746 |
|
186 | ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746 | |
187 | e: remote is newer -> g |
|
187 | e: remote is newer -> g | |
188 | getting e |
|
188 | getting e | |
189 | b: remote unchanged -> k |
|
|||
190 | committing files: |
|
189 | committing files: | |
191 | e |
|
190 | e | |
192 | committing manifest |
|
191 | committing manifest | |
@@ -203,7 +202,6 b' Graft out of order, skipping a merge and' | |||||
203 | preserving e for resolve of e |
|
202 | preserving e for resolve of e | |
204 | d: remote is newer -> g |
|
203 | d: remote is newer -> g | |
205 | getting d |
|
204 | getting d | |
206 | b: remote unchanged -> k |
|
|||
207 | e: versions differ -> m (premerge) |
|
205 | e: versions differ -> m (premerge) | |
208 | picked tool ':merge' for e (binary False symlink False changedelete False) |
|
206 | picked tool ':merge' for e (binary False symlink False changedelete False) | |
209 | merging e |
|
207 | merging e |
@@ -38,7 +38,6 b' https://bz.mercurial-scm.org/672' | |||||
38 | removing 1 |
|
38 | removing 1 | |
39 | 1a: remote created -> g |
|
39 | 1a: remote created -> g | |
40 | getting 1a |
|
40 | getting 1a | |
41 | 2: remote unchanged -> k |
|
|||
42 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
41 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
43 | (branch merge, don't forget to commit) |
|
42 | (branch merge, don't forget to commit) | |
44 |
|
43 |
@@ -89,7 +89,6 b' args:' | |||||
89 | preserving a for resolve of b |
|
89 | preserving a for resolve of b | |
90 | preserving rev for resolve of rev |
|
90 | preserving rev for resolve of rev | |
91 | starting 4 threads for background file closing (?) |
|
91 | starting 4 threads for background file closing (?) | |
92 | a: remote unchanged -> k |
|
|||
93 | b: remote copied from a -> m (premerge) |
|
92 | b: remote copied from a -> m (premerge) | |
94 | picked tool 'python ../merge' for b (binary False symlink False changedelete False) |
|
93 | picked tool 'python ../merge' for b (binary False symlink False changedelete False) | |
95 | merging a and b to b |
|
94 | merging a and b to b | |
@@ -652,7 +651,6 b' m "um a c" "um x c" " " "10 do merg' | |||||
652 | preserving b for resolve of b |
|
651 | preserving b for resolve of b | |
653 | preserving rev for resolve of rev |
|
652 | preserving rev for resolve of rev | |
654 | starting 4 threads for background file closing (?) |
|
653 | starting 4 threads for background file closing (?) | |
655 | a: remote unchanged -> k |
|
|||
656 | b: both created -> m (premerge) |
|
654 | b: both created -> m (premerge) | |
657 | picked tool 'python ../merge' for b (binary False symlink False changedelete False) |
|
655 | picked tool 'python ../merge' for b (binary False symlink False changedelete False) | |
658 | merging b |
|
656 | merging b |
General Comments 0
You need to be logged in to leave comments.
Login now