[PATCH 3 of 5 V2] obsolete: add createmarkers option

Durham Goode durham at fb.com
Wed Oct 15 15:03:23 CDT 2014


# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1413318232 25200
#      Tue Oct 14 13:23:52 2014 -0700
# Node ID a3a31152f8570dc6e83ff0ab8298673923f32226
# Parent  c2a05a28061077532e4153ff3724ed82ed2de139
obsolete: add createmarkers option

The basic obsolete option is allowing the creation of obsolete markers. This
does not enable other features, such as allowing unstable commits or exchanging
obsolete markers.

diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -640,7 +640,7 @@ def _histedit(ui, repo, *freeargs, **opt
         if mapping:
             movebookmarks(ui, repo, mapping, topmost, ntm)
             # TODO update mq state
-        if obsolete._enabled:
+        if obsolete.isenabled(repo, obsolete.createmarkersopt):
             markers = []
             # sort by revision number because it sound "right"
             for prec in sorted(mapping, key=repo.changelog.rev):
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -928,7 +928,7 @@ def clearrebased(ui, repo, state, skippe
 
     If `collapsedas` is not None, the rebase was a collapse whose result if the
     `collapsedas` node."""
-    if obsolete._enabled:
+    if obsolete.isenabled(repo, obsolete.createmarkersopt):
         markers = []
         for rev, newrev in sorted(state.items()):
             if newrev >= 0:
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -2283,7 +2283,8 @@ def amend(ui, repo, commitfunc, old, ext
                         marks[bm] = newid
                     marks.write()
             #commit the whole amend process
-            if obsolete._enabled and newid != old.node():
+            createmarkers = obsolete.isenabled(repo, obsolete.createmarkersopt)
+            if createmarkers and newid != old.node():
                 # mark the new changeset as successor of the rewritten one
                 new = repo[newid]
                 obs = [(old, (new,))]
@@ -2294,7 +2295,7 @@ def amend(ui, repo, commitfunc, old, ext
             tr.close()
         finally:
             tr.release()
-        if (not obsolete._enabled) and newid != old.node():
+        if not createmarkers and newid != old.node():
             # Strip the intermediate commit (if there was one) and the amended
             # commit
             if node:
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -406,9 +406,10 @@ class localrepository(object):
         kwargs = {}
         if defaultformat is not None:
             defaultformat['defaultformat'] = defaultformat
-        store = obsolete.obsstore(self.sopener, readonly=not obsolete._enabled,
+        readonly = not obsolete.isenabled(self, obsolete.createmarkers)
+        store = obsolete.obsstore(self.sopener, readonly=readonly,
                                   **kwargs)
-        if store and not obsolete._enabled:
+        if store and readonly:
             # message is rare enough to not be translated
             msg = 'obsolete feature not enabled but %i markers found!\n'
             self.ui.warn(msg % len(list(store)))
diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -80,6 +80,8 @@ from i18n import _
 # the obsolete feature is not mature enough to be enabled by default.
 # you have to rely on third party extension extension to enable this.
 _enabled = False
+# Enablable options for obsolesence
+createmarkersopt = 'createmarkers'
 
 ### obsolescence marker flag
 


More information about the Mercurial-devel mailing list