diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -479,7 +479,7 @@ # prefetch files before update def applyupdates( - orig, repo, actions, wctx, mctx, overwrite, wantfiledata, labels=None + orig, repo, actions, wctx, mctx, overwrite, wantfiledata, **opts ): if isenabled(repo): manifest = mctx.manifest() @@ -488,9 +488,7 @@ files.append((f, hex(manifest[f]))) # batch fetch the needed files from the server repo.fileservice.prefetch(files) - return orig( - repo, actions, wctx, mctx, overwrite, wantfiledata, labels=labels - ) + return orig(repo, actions, wctx, mctx, overwrite, wantfiledata, **opts) # Prefetch merge checkunknownfiles diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -1200,12 +1200,21 @@ def applyupdates( - repo, actions, wctx, mctx, overwrite, wantfiledata, labels=None + repo, + actions, + wctx, + mctx, + overwrite, + wantfiledata, + labels=None, + commitinfo=None, ): """apply the merge action list to the working directory wctx is the working copy context mctx is the context to be merged into the working copy + commitinfo is a mapping of information which needs to be stored somewhere + (probably mergestate) so that it can be used at commit time. Return a tuple of (counts, filedata), where counts is a tuple (updated, merged, removed, unresolved) that describes how many @@ -1220,6 +1229,15 @@ repo, wctx.p1().node(), mctx.node(), labels ) + if commitinfo is None: + commitinfo = {} + + for f, op in pycompat.iteritems(commitinfo): + # the other side of filenode was choosen while merging, store this in + # mergestate so that it can be reused on commit + if op == b'other': + ms.addmergedother(f) + # add ACTION_GET_OTHER_AND_STORE to mergestate for e in actions[mergestatemod.ACTION_GET_OTHER_AND_STORE]: ms.addmergedother(e[0]) @@ -1892,7 +1910,14 @@ wantfiledata = updatedirstate and not branchmerge stats, getfiledata = applyupdates( - repo, actions, wc, p2, overwrite, wantfiledata, labels=labels + repo, + actions, + wc, + p2, + overwrite, + wantfiledata, + labels=labels, + commitinfo=commitinfo, ) if updatedirstate: