@@ -158,7 +158,7 @@ def _checkcollision(repo, wmf, actions,
pmmf.discard(f)
pmmf.add(fd)
def mergeop(f, args):
- f2, fd, move = args
+ f2, fa, fd, move = args
if move:
pmmf.discard(f)
pmmf.add(fd)
@@ -288,7 +288,7 @@ def manifestmerge(repo, wctx, p2, pa, br
elif nol and n1 == a: # local only changed 'x'
actions.append((f, "g", (fl1,), "remote is newer"))
else: # both changed something
- actions.append((f, "m", (f, f, False), "versions differ"))
+ actions.append((f, "m", (f, f, f, False), "versions differ"))
elif f in copied: # files we'll deal with on m2 side
pass
elif n1 and f in movewithdir: # directory rename
@@ -297,7 +297,7 @@ def manifestmerge(repo, wctx, p2, pa, br
"remote renamed directory to " + f2))
elif n1 and f in copy:
f2 = copy[f]
- actions.append((f, "m", (f2, f, False),
+ actions.append((f, "m", (f2, f2, f, False),
"local copied/moved to " + f2))
elif n1 and f in ma: # clean, a different, no remote
if n1 != ma[f]:
@@ -313,10 +313,10 @@ def manifestmerge(repo, wctx, p2, pa, br
elif n2 and f in copy:
f2 = copy[f]
if f2 in m2:
- actions.append((f2, "m", (f, f, False),
+ actions.append((f2, "m", (f, f2, f, False),
"remote copied to " + f))
else:
- actions.append((f2, "m", (f, f, True),
+ actions.append((f2, "m", (f, f2, f, True),
"remote moved to " + f))
elif n2 and f not in ma:
# local unknown, remote created: the logic is described by the
@@ -336,7 +336,7 @@ def manifestmerge(repo, wctx, p2, pa, br
else:
different = _checkunknownfile(repo, wctx, p2, f)
if force and branchmerge and different:
- actions.append((f, "m", (f, f, False),
+ actions.append((f, "m", (f, f, f, False), # f not in ma ...
"remote differs from untracked local"))
elif not force and different:
aborts.append((f, "ud"))
@@ -449,7 +449,7 @@ def applyupdates(repo, actions, wctx, mc
f, m, args, msg = a
repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m))
if m == "m": # merge
- f2, fd, move = args
+ f2, fa, fd, move = args
if fd == '.hgsubstate': # merged internally
continue
repo.ui.debug(" preserving %s for resolve of %s\n" % (f, fd))
@@ -460,9 +460,9 @@ def applyupdates(repo, actions, wctx, mc
fca = fcl.p1()
else:
fca = repo.filectx(f, fileid=nullrev)
+ elif fa in actx:
+ fca = actx[fa]
else:
- fca = fcl.ancestor(fco, actx)
- if not fca:
fca = repo.filectx(f, fileid=nullrev)
ms.add(fcl, fco, fca, fd)
if f != fd and move:
@@ -514,7 +514,7 @@ def applyupdates(repo, actions, wctx, mc
f, m, args, msg = a
progress(_updating, z + i + 1, item=f, total=numupdates, unit=_files)
if m == "m": # merge
- f2, fd, move = args
+ f2, fa, fd, move = args
if fd == '.hgsubstate': # subrepo states need updating
subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx),
overwrite)
@@ -596,7 +596,7 @@ def recordupdates(repo, actions, branchm
else:
repo.dirstate.normal(f)
elif m == "m": # merge
- f2, fd, move = args
+ f2, fa, fd, move = args
if branchmerge:
# We've done a branch merge, mark this file as merged
# so that we properly record the merger later
@@ -268,6 +268,7 @@ h: l vs l, different
merging b
warning: conflicts during merge.
merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
+ warning: cannot merge flags for c
merging d
warning: internal:merge cannot merge symlinks for d
merging d incomplete! (edit conflicts, then use 'hg resolve --mark')
@@ -328,6 +329,7 @@ h: l vs l, different
merging b
warning: conflicts during merge.
merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
+ warning: cannot merge flags for c
merging d
warning: internal:merge cannot merge symlinks for d
merging d incomplete! (edit conflicts, then use 'hg resolve --mark')
@@ -355,7 +357,7 @@ h: l vs l, different
2
>>>>>>> other
$ tellmeabout c
- c is a plain file with content:
+ c is an executable file with content:
x
$ tellmeabout d
d is an executable file with content:
@@ -345,7 +345,7 @@ args:
updating: b 1/2 files (50.00%)
picked tool 'python ../merge' for b (binary False symlink False)
merging b
- my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337
+ my b@62e7bf090eba+ other b@49b6d8032493 ancestor b@000000000000
updating: rev 2/2 files (100.00%)
picked tool 'python ../merge' for rev (binary False symlink False)
merging rev