Mercurial > hg-stable
changeset 45297:cb6a72dc0511
merge: pass commitinfo to applyupdates() and get it stored in mergestate
This patch passes the commitinfo calulcated in manifestmerge() to applyupdates()
so that it can be read there and stored in mergestate. On commit, we can read
mergestate for such information and act accordingly.
This patch also makes ACTION_GET_OTHER_AND_STORE not required anymore. Next
patch will remove the messy code surrounding it.
Differential Revision: https://phab.mercurial-scm.org/D8743
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Tue, 14 Jul 2020 16:31:52 +0530 |
parents | 8e8d513941b4 |
children | c515c54f6530 |
files | hgext/remotefilelog/__init__.py mercurial/merge.py |
diffstat | 2 files changed, 29 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/remotefilelog/__init__.py Tue Jul 14 16:21:08 2020 +0530 +++ b/hgext/remotefilelog/__init__.py Tue Jul 14 16:31:52 2020 +0530 @@ -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
--- a/mercurial/merge.py Tue Jul 14 16:21:08 2020 +0530 +++ b/mercurial/merge.py Tue Jul 14 16:31:52 2020 +0530 @@ -1241,12 +1241,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 @@ -1261,6 +1270,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]) @@ -1935,7 +1953,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=mresult.commitinfo, ) if updatedirstate: