Show More
@@ -786,7 +786,7 b' def driverconclude(repo, ms, wctx, label' | |||
|
786 | 786 | return True |
|
787 | 787 | |
|
788 | 788 | def manifestmerge(repo, wctx, p2, pa, branchmerge, force, matcher, |
|
789 | acceptremote, followcopies): | |
|
789 | acceptremote, followcopies, forcefulldiff=False): | |
|
790 | 790 | """ |
|
791 | 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 | 821 | if any(wctx.sub(s).dirty() for s in wctx.substate): |
|
822 | 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 | 844 | diff = m1.diff(m2, match=matcher) |
|
825 | 845 | |
|
826 | 846 | if matcher is None: |
@@ -974,7 +994,7 b' def calculateupdates(repo, wctx, mctx, a' | |||
|
974 | 994 | repo.ui.note(_('\ncalculating bids for ancestor %s\n') % ancestor) |
|
975 | 995 | actions, diverge1, renamedelete1 = manifestmerge( |
|
976 | 996 | repo, wctx, mctx, ancestor, branchmerge, force, matcher, |
|
977 | acceptremote, followcopies) | |
|
997 | acceptremote, followcopies, forcefulldiff=True) | |
|
978 | 998 | _checkunknownfiles(repo, wctx, mctx, force, actions, mergeforce) |
|
979 | 999 | |
|
980 | 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 | 186 | ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746 |
|
187 | 187 | e: remote is newer -> g |
|
188 | 188 | getting e |
|
189 | b: remote unchanged -> k | |
|
190 | 189 | committing files: |
|
191 | 190 | e |
|
192 | 191 | committing manifest |
@@ -203,7 +202,6 b' Graft out of order, skipping a merge and' | |||
|
203 | 202 | preserving e for resolve of e |
|
204 | 203 | d: remote is newer -> g |
|
205 | 204 | getting d |
|
206 | b: remote unchanged -> k | |
|
207 | 205 | e: versions differ -> m (premerge) |
|
208 | 206 | picked tool ':merge' for e (binary False symlink False changedelete False) |
|
209 | 207 | merging e |
@@ -38,7 +38,6 b' https://bz.mercurial-scm.org/672' | |||
|
38 | 38 | removing 1 |
|
39 | 39 | 1a: remote created -> g |
|
40 | 40 | getting 1a |
|
41 | 2: remote unchanged -> k | |
|
42 | 41 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
43 | 42 | (branch merge, don't forget to commit) |
|
44 | 43 |
@@ -89,7 +89,6 b' args:' | |||
|
89 | 89 | preserving a for resolve of b |
|
90 | 90 | preserving rev for resolve of rev |
|
91 | 91 | starting 4 threads for background file closing (?) |
|
92 | a: remote unchanged -> k | |
|
93 | 92 | b: remote copied from a -> m (premerge) |
|
94 | 93 | picked tool 'python ../merge' for b (binary False symlink False changedelete False) |
|
95 | 94 | merging a and b to b |
@@ -652,7 +651,6 b' m "um a c" "um x c" " " "10 do merg' | |||
|
652 | 651 | preserving b for resolve of b |
|
653 | 652 | preserving rev for resolve of rev |
|
654 | 653 | starting 4 threads for background file closing (?) |
|
655 | a: remote unchanged -> k | |
|
656 | 654 | b: both created -> m (premerge) |
|
657 | 655 | picked tool 'python ../merge' for b (binary False symlink False changedelete False) |
|
658 | 656 | merging b |
General Comments 0
You need to be logged in to leave comments.
Login now