Mercurial > public > mercurial-scm > hg-stable
diff mercurial/merge.py @ 33323:252500520d60
sparse: refactor update actions filtering and call from core
merge.calculateupdates() now filters the update actions through sparse
by default.
The filtering no-ops if sparse isn't enabled or no sparse config
is defined.
The function has been refactored to behave more like a filter
instead of a wrapper of merge.calculateupdates().
We should arguably take sparse into account earlier in
merge.calculateupdates(). This patch preserves the old behavior
of applying sparse at the end of update calculation, which is the
simplest and safest approach.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 06 Jul 2017 16:29:31 -0700 |
parents | d09e948dc303 |
children | 0407a51b9d8c |
line wrap: on
line diff
--- a/mercurial/merge.py Thu Jul 06 16:17:35 2017 -0700 +++ b/mercurial/merge.py Thu Jul 06 16:29:31 2017 -0700 @@ -975,7 +975,10 @@ def calculateupdates(repo, wctx, mctx, ancestors, branchmerge, force, acceptremote, followcopies, matcher=None, mergeforce=False): - "Calculate the actions needed to merge mctx into wctx using ancestors" + """Calculate the actions needed to merge mctx into wctx using ancestors""" + # Avoid cycle. + from . import sparse + if len(ancestors) == 1: # default actions, diverge, renamedelete = manifestmerge( repo, wctx, mctx, ancestors[0], branchmerge, force, matcher, @@ -1074,7 +1077,10 @@ fractions = _forgetremoved(wctx, mctx, branchmerge) actions.update(fractions) - return actions, diverge, renamedelete + prunedactions = sparse.filterupdatesactions(repo, wctx, mctx, branchmerge, + actions) + + return prunedactions, diverge, renamedelete def batchremove(repo, wctx, actions): """apply removes to the working directory