diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -1130,10 +1130,7 @@ fractions = _forgetremoved(wctx, mctx, branchmerge) mresult.updateactions(fractions) - prunedactions = sparse.filterupdatesactions( - repo, wctx, mctx, branchmerge, mresult.actions - ) - mresult.setactions(prunedactions) + sparse.filterupdatesactions(repo, wctx, mctx, branchmerge, mresult) _resolvetrivial(repo, wctx, mctx, ancestors[0], mresult) return mresult diff --git a/mercurial/sparse.py b/mercurial/sparse.py --- a/mercurial/sparse.py +++ b/mercurial/sparse.py @@ -366,16 +366,16 @@ return result -def filterupdatesactions(repo, wctx, mctx, branchmerge, actions): +def filterupdatesactions(repo, wctx, mctx, branchmerge, mresult): """Filter updates to only lay out files that match the sparse rules.""" if not enabled: - return actions + return oldrevs = [pctx.rev() for pctx in wctx.parents()] oldsparsematch = matcher(repo, oldrevs) if oldsparsematch.always(): - return actions + return files = set() prunedactions = {} @@ -390,7 +390,7 @@ sparsematch = matcher(repo, [mctx.rev()]) temporaryfiles = [] - for file, action in pycompat.iteritems(actions): + for file, action in pycompat.iteritems(mresult.actions): type, args, msg = action files.add(file) if sparsematch(file): @@ -457,7 +457,7 @@ elif old and not new: prunedactions[file] = (b'r', [], b'') - return prunedactions + mresult.setactions(prunedactions) def refreshwdir(repo, origstatus, origsparsematch, force=False):