##// END OF EJS Templates
merge: use ancestor filename from planning phase instead of filectx ancestor...
Mads Kiilerich -
r20897:0b50788c default
parent child Browse files
Show More
@@ -340,7 +340,7 def _checkcollision(repo, wmf, actions):
340 pmmf.discard(f)
340 pmmf.discard(f)
341 pmmf.add(fd)
341 pmmf.add(fd)
342 def mergeop(f, args):
342 def mergeop(f, args):
343 f2, fd, move = args
343 f2, fa, fd, move = args
344 if move:
344 if move:
345 pmmf.discard(f)
345 pmmf.discard(f)
346 pmmf.add(fd)
346 pmmf.add(fd)
@@ -468,7 +468,7 def manifestmerge(repo, wctx, p2, pa, br
468 elif nol and n1 == a: # local only changed 'x'
468 elif nol and n1 == a: # local only changed 'x'
469 actions.append((f, "g", (fl1,), "remote is newer"))
469 actions.append((f, "g", (fl1,), "remote is newer"))
470 else: # both changed something
470 else: # both changed something
471 actions.append((f, "m", (f, f, False), "versions differ"))
471 actions.append((f, "m", (f, fa, f, False), "versions differ"))
472 elif f in copied: # files we'll deal with on m2 side
472 elif f in copied: # files we'll deal with on m2 side
473 pass
473 pass
474 elif n1 and f in movewithdir: # directory rename
474 elif n1 and f in movewithdir: # directory rename
@@ -477,7 +477,7 def manifestmerge(repo, wctx, p2, pa, br
477 "remote renamed directory to " + f2))
477 "remote renamed directory to " + f2))
478 elif n1 and f in copy:
478 elif n1 and f in copy:
479 f2 = copy[f]
479 f2 = copy[f]
480 actions.append((f, "m", (f2, f, False),
480 actions.append((f, "m", (f2, f2, f, False),
481 "local copied/moved to " + f2))
481 "local copied/moved to " + f2))
482 elif n1 and f in ma: # clean, a different, no remote
482 elif n1 and f in ma: # clean, a different, no remote
483 if n1 != ma[f]:
483 if n1 != ma[f]:
@@ -496,10 +496,10 def manifestmerge(repo, wctx, p2, pa, br
496 elif n2 and f in copy:
496 elif n2 and f in copy:
497 f2 = copy[f]
497 f2 = copy[f]
498 if f2 in m2:
498 if f2 in m2:
499 actions.append((f2, "m", (f, f, False),
499 actions.append((f2, "m", (f, f2, f, False),
500 "remote copied to " + f))
500 "remote copied to " + f))
501 else:
501 else:
502 actions.append((f2, "m", (f, f, True),
502 actions.append((f2, "m", (f, f2, f, True),
503 "remote moved to " + f))
503 "remote moved to " + f))
504 elif n2 and f not in ma:
504 elif n2 and f not in ma:
505 # local unknown, remote created: the logic is described by the
505 # local unknown, remote created: the logic is described by the
@@ -519,7 +519,8 def manifestmerge(repo, wctx, p2, pa, br
519 else:
519 else:
520 different = _checkunknownfile(repo, wctx, p2, f)
520 different = _checkunknownfile(repo, wctx, p2, f)
521 if force and branchmerge and different:
521 if force and branchmerge and different:
522 actions.append((f, "m", (f, f, False),
522 # FIXME: This is wrong - f is not in ma ...
523 actions.append((f, "m", (f, f, f, False),
523 "remote differs from untracked local"))
524 "remote differs from untracked local"))
524 elif not force and different:
525 elif not force and different:
525 aborts.append((f, "ud"))
526 aborts.append((f, "ud"))
@@ -617,7 +618,7 def applyupdates(repo, actions, wctx, mc
617 f, m, args, msg = a
618 f, m, args, msg = a
618 repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m))
619 repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m))
619 if m == "m": # merge
620 if m == "m": # merge
620 f2, fd, move = args
621 f2, fa, fd, move = args
621 if fd == '.hgsubstate': # merged internally
622 if fd == '.hgsubstate': # merged internally
622 continue
623 continue
623 repo.ui.debug(" preserving %s for resolve of %s\n" % (f, fd))
624 repo.ui.debug(" preserving %s for resolve of %s\n" % (f, fd))
@@ -628,9 +629,9 def applyupdates(repo, actions, wctx, mc
628 fca = fcl.p1()
629 fca = fcl.p1()
629 else:
630 else:
630 fca = repo.filectx(f, fileid=nullrev)
631 fca = repo.filectx(f, fileid=nullrev)
632 elif fa in actx:
633 fca = actx[fa]
631 else:
634 else:
632 fca = fcl.ancestor(fco, actx)
633 if not fca:
634 fca = repo.filectx(f, fileid=nullrev)
635 fca = repo.filectx(f, fileid=nullrev)
635 ms.add(fcl, fco, fca, fd)
636 ms.add(fcl, fco, fca, fd)
636 if f != fd and move:
637 if f != fd and move:
@@ -682,7 +683,7 def applyupdates(repo, actions, wctx, mc
682 f, m, args, msg = a
683 f, m, args, msg = a
683 progress(_updating, z + i + 1, item=f, total=numupdates, unit=_files)
684 progress(_updating, z + i + 1, item=f, total=numupdates, unit=_files)
684 if m == "m": # merge
685 if m == "m": # merge
685 f2, fd, move = args
686 f2, fa, fd, move = args
686 if fd == '.hgsubstate': # subrepo states need updating
687 if fd == '.hgsubstate': # subrepo states need updating
687 subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx),
688 subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx),
688 overwrite)
689 overwrite)
@@ -792,7 +793,7 def recordupdates(repo, actions, branchm
792 else:
793 else:
793 repo.dirstate.normal(f)
794 repo.dirstate.normal(f)
794 elif m == "m": # merge
795 elif m == "m": # merge
795 f2, fd, move = args
796 f2, fa, fd, move = args
796 if branchmerge:
797 if branchmerge:
797 # We've done a branch merge, mark this file as merged
798 # We've done a branch merge, mark this file as merged
798 # so that we properly record the merger later
799 # so that we properly record the merger later
@@ -268,6 +268,7 h: l vs l, different
268 merging b
268 merging b
269 warning: conflicts during merge.
269 warning: conflicts during merge.
270 merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
270 merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
271 warning: cannot merge flags for c
271 merging d
272 merging d
272 warning: internal:merge cannot merge symlinks for d
273 warning: internal:merge cannot merge symlinks for d
273 merging d incomplete! (edit conflicts, then use 'hg resolve --mark')
274 merging d incomplete! (edit conflicts, then use 'hg resolve --mark')
@@ -328,6 +329,7 h: l vs l, different
328 merging b
329 merging b
329 warning: conflicts during merge.
330 warning: conflicts during merge.
330 merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
331 merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
332 warning: cannot merge flags for c
331 merging d
333 merging d
332 warning: internal:merge cannot merge symlinks for d
334 warning: internal:merge cannot merge symlinks for d
333 merging d incomplete! (edit conflicts, then use 'hg resolve --mark')
335 merging d incomplete! (edit conflicts, then use 'hg resolve --mark')
@@ -355,7 +357,7 h: l vs l, different
355 2
357 2
356 >>>>>>> other
358 >>>>>>> other
357 $ tellmeabout c
359 $ tellmeabout c
358 c is a plain file with content:
360 c is an executable file with content:
359 x
361 x
360 $ tellmeabout d
362 $ tellmeabout d
361 d is an executable file with content:
363 d is an executable file with content:
General Comments 0
You need to be logged in to leave comments. Login now