[PATCH 1 of 4 V2 mergedriver] mergestate: add a constructor that sets up a fresh merge state

Siddharth Agarwal sid0 at fb.com
Wed Nov 18 01:13:23 UTC 2015


# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1447808454 28800
#      Tue Nov 17 17:00:54 2015 -0800
# Node ID 681b710bd541703659aec3ac3c9a5b7b0d6e9493
# Parent  a879917dec18a4621476c8af18724f5d5696c663
mergestate: add a constructor that sets up a fresh merge state

Eventually, we'll move the read call out of the constructor. This will:
- avoid unnecessary reads when we're going to nuke the merge state anyway
- avoid raising an exception if there's an unsupported merge record

'clean' seems like a good name for it because I wanted to avoid anything with
the word 'new' in it, and 'reset' is more an action performed on a merge state
than a way to get a new merge state.

Thanks to Martin von Zweigbergk for feedback about naming this.

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -75,6 +75,14 @@ class mergestate(object):
     statepathv1 = 'merge/state'
     statepathv2 = 'merge/state2'
 
+    @staticmethod
+    def clean(repo, node=None, other=None):
+        """Initialize a brand new merge state, removing any existing state on
+        disk."""
+        ms = mergestate(repo)
+        ms.reset(node, other)
+        return ms
+
     def __init__(self, repo):
         self._repo = repo
         self._dirty = False


More information about the Mercurial-devel mailing list