diff mercurial/bookmarks.py @ 33517:08bf0ebc6c8e

bookmark: deprecate direct set of a bookmark value We want all bookmark update to go through 'applychanges', so lets deprecate legacy ways of doing bookmark update.
author Boris Feld <boris.feld@octobus.net>
date Mon, 10 Jul 2017 21:47:34 +0200
parents f9e6e43c7987
children 712a85b3677f
line wrap: on
line diff
--- a/mercurial/bookmarks.py	Mon Jul 10 20:26:53 2017 +0200
+++ b/mercurial/bookmarks.py	Mon Jul 10 21:47:34 2017 +0200
@@ -102,8 +102,14 @@
         self._aclean = False
 
     def __setitem__(self, *args, **kwargs):
+        msg = ("'bookmarks[name] = node' is deprecated, "
+               "use 'bookmarks.applychanges'")
+        self._repo.ui.deprecwarn(msg, '4.3')
+        self._set(*args, **kwargs)
+
+    def _set(self, key, value):
         self._clean = False
-        return dict.__setitem__(self, *args, **kwargs)
+        return dict.__setitem__(self, key, value)
 
     def __delitem__(self, key):
         self._clean = False
@@ -118,7 +124,7 @@
             if node is None:
                 del self[name]
             else:
-                self[name] = node
+                self._set(name, node)
             if bmchanges is not None:
                 # if a previous value exist preserve the "initial" value
                 previous = bmchanges.get(name)