merge: allow a custom working context to be passed to update
authorPhil Cohen <phillco@fb.com>
Thu, 14 Sep 2017 13:14:32 -0700
changeset 34302 440ece43024c
parent 34301 3704d3f21136
child 34303 575097b4dce0
merge: allow a custom working context to be passed to update This will allow anyone to enable the first in-menmory merge milestone by wrapping merge.update in an extension and creating an overlayworkingctx. Differential Revision: https://phab.mercurial-scm.org/D682
mercurial/merge.py
--- a/mercurial/merge.py	Wed Jun 14 11:13:57 2017 -0400
+++ b/mercurial/merge.py	Thu Sep 14 13:14:32 2017 -0700
@@ -1479,7 +1479,7 @@
 
 def update(repo, node, branchmerge, force, ancestor=None,
            mergeancestor=False, labels=None, matcher=None, mergeforce=False,
-           updatecheck=None):
+           updatecheck=None, wc=None):
     """
     Perform a merge between the working directory and the given node
 
@@ -1527,6 +1527,9 @@
     2 = abort: uncommitted changes (commit or update --clean to discard changes)
     3 = abort: uncommitted changes (checked in commands.py)
 
+    The merge is performed inside ``wc``, a workingctx-like objects. It defaults
+    to repo[None] if None is passed.
+
     Return the same tuple as applyupdates().
     """
     # Avoid cycle.
@@ -1550,7 +1553,8 @@
     else:
         partial = True
     with repo.wlock():
-        wc = repo[None]
+        if wc is None:
+            wc = repo[None]
         pl = wc.parents()
         p1 = pl[0]
         pas = [None]