scmutil: add capability to cleanupnodes to take obsmarker metadata
authorPulkit Goyal <7895pulkit@gmail.com>
Sun, 15 Oct 2017 14:34:24 +0530
changeset 34793 3df59451cdec
parent 34792 3b4b38130689
child 34794 5781e0931c16
scmutil: add capability to cleanupnodes to take obsmarker metadata This patch adds a metadata argument to cleanupnodes() which will be dict and can be passed to obsmarker.createmarkers() and can be stored on the obsmarker. In cases when obsolescence is not enabled, the metadata argument is useless. This is a step towards storing a note in amend. Differential Revision: https://phab.mercurial-scm.org/D1093
mercurial/scmutil.py
--- a/mercurial/scmutil.py	Mon Oct 16 13:06:33 2017 -0700
+++ b/mercurial/scmutil.py	Sun Oct 15 14:34:24 2017 +0530
@@ -613,7 +613,7 @@
     def __contains__(self, node):
         return self._revcontains(self._torev(node))
 
-def cleanupnodes(repo, replacements, operation, moves=None):
+def cleanupnodes(repo, replacements, operation, moves=None, metadata=None):
     """do common cleanups when old nodes are replaced by new nodes
 
     That includes writing obsmarkers or stripping nodes, and moving bookmarks.
@@ -625,6 +625,9 @@
 
     replacements is {oldnode: [newnode]} or a iterable of nodes if they do not
     have replacements. operation is a string, like "rebase".
+
+    metadata is dictionary containing metadata to be stored in obsmarker if
+    obsolescence is enabled.
     """
     if not replacements and not moves:
         return
@@ -695,7 +698,8 @@
                     for n, s in sorted(replacements.items(), key=sortfunc)
                     if s or not isobs(n)]
             if rels:
-                obsolete.createmarkers(repo, rels, operation=operation)
+                obsolete.createmarkers(repo, rels, operation=operation,
+                                       metadata=metadata)
         else:
             from . import repair # avoid import cycle
             tostrip = list(replacements)