changeset 18035:5881d5b7552f

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.
author David Schleimer <dschleimer@fb.com>
date Tue, 04 Dec 2012 12:54:18 -0800
parents 1a570f04de07
children 8b846dbc57b6
files mercurial/merge.py
diffstat 1 files changed, 21 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/merge.py	Mon Dec 03 14:21:45 2012 -0800
+++ b/mercurial/merge.py	Tue Dec 04 12:54:18 2012 -0800
@@ -448,6 +448,26 @@
 
     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 @@
                 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