[PATCH 1 of 3 STABLE] obsolete: introduce an `_enabled` switch to disable the feature by default

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sat Jul 28 07:51:07 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1343474346 -7200
# Branch stable
# Node ID 4cf78c967f0590ae922cf5df5b4628a97f2691ab
# Parent  6e83a898b70ed2dd30f6d9c18f9673c50032dd73
obsolete: introduce an `_enabled` switch to disable the feature by default

Obsolete markers wide-usage and propagation should be avoided by default until
the obsolete feature is more mature.

This changeset introduce the `_enable` variable and prevent the creation of
obsolete marker if the feature if set to `False` (the default).

More limitation comes in followup changesets.

diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -58,7 +58,9 @@
 _pack = struct.pack
 _unpack = struct.unpack
 
-
+# the obsolete feature is not mature enought to be enabled by default.
+# you have to rely on third party extension extension to enable this.
+_enabled = False
 
 # data used for parsing and writing
 _fmversion = 0
@@ -194,6 +196,8 @@
 
         Take care of filtering duplicate.
         Return the number of new marker."""
+        if not _enabled:
+            raise util.Abort('obsolete feature is not enabled on this repo')
         new = [m for m in markers if m not in self._all]
         if new:
             f = self.sopener('obsstore', 'ab')
diff --git a/tests/test-obsolete-changeset-exchange.t b/tests/test-obsolete-changeset-exchange.t
--- a/tests/test-obsolete-changeset-exchange.t
+++ b/tests/test-obsolete-changeset-exchange.t
@@ -1,6 +1,13 @@
 Test changesets filtering during exchanges (some tests are still in
 test-obsolete.t)
 
+  $ cat > obs.py << EOF
+  > import mercurial.obsolete
+  > mercurial.obsolete._enabled = True
+  > EOF
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH
+
 Push does corrupt remote
 ------------------------
 
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -27,10 +27,25 @@
 
   $ hg init tmpa
   $ cd tmpa
+  $ mkcommit kill_me
+
+Checking that the feature is properly disabled
+
+  $ hg debugobsolete -d '0 0' `getid kill_me` -u babar
+  abort: obsolete feature is not enabled on this repo
+  [255]
+
+Enabling it
+
+  $ cat > ../obs.py << EOF
+  > import mercurial.obsolete
+  > mercurial.obsolete._enabled = True
+  > EOF
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH
 
 Killing a single changeset without replacement
 
-  $ mkcommit kill_me
   $ hg debugobsolete -d '0 0' `getid kill_me` -u babar
   $ hg debugobsolete
   97b7c2d76b1845ed3eb988cd612611e72406cef0 0 {'date': '0 0', 'user': 'babar'}


More information about the Mercurial-devel mailing list