# HG changeset patch # User David Schleimer # Date 2012-12-04 20:54:18 # Node ID 5881d5b7552f3a79fd0c4e700c207c90fab916a8 # Parent 1a570f04de0772f158d372c06d543053fb20fec2 merge: refactor action calculation into function This pulls the code used to calculate the changes that need to happen during merge.update() into a separate function. This is not useful on its own, but is instead preparatory to performing grafts in memory when there are no potential conflicts. diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -448,6 +448,26 @@ def applyupdates(repo, action, wctx, mct return updated, merged, removed, unresolved +def calculateupdates(repo, tctx, mctx, ancestor, branchmerge, force, partial): + "Calculate the actions needed to merge mctx into tctx" + action = [] + folding = not util.checkcase(repo.path) + if folding: + # collision check is not needed for clean update + if (not branchmerge and + (force or not tctx.dirty(missing=True, branch=False))): + _checkcollision(mctx, None) + else: + _checkcollision(mctx, tctx) + if not force: + _checkunknown(repo, tctx, mctx) + action += _forgetremoved(tctx, mctx, branchmerge) + action += manifestmerge(repo, tctx, mctx, + ancestor, + force and not branchmerge, + partial) + return action + def recordupdates(repo, action, branchmerge): "record merge actions to the dirstate" @@ -609,19 +629,7 @@ def update(repo, node, branchmerge, forc pa = p1 ### calculate phase - action = [] - folding = not util.checkcase(repo.path) - if folding: - # collision check is not needed for clean update - if (not branchmerge and - (force or not wc.dirty(missing=True, branch=False))): - _checkcollision(p2, None) - else: - _checkcollision(p2, (wc, pa)) - if not force: - _checkunknown(repo, wc, p2) - action += _forgetremoved(wc, p2, branchmerge) - action += manifestmerge(repo, wc, p2, pa, overwrite, partial) + action = calculateupdates(repo, wc, p2, pa, branchmerge, force, partial) ### apply phase if not branchmerge: # just jump to the new rev