D6185: changelog: pass default extras into decodeextra()

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Tue Apr 2 19:30:46 UTC 2019


martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  I want to use the function with a different default (empty dict, to be
  specific) and this enables that.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6185

AFFECTED FILES
  mercurial/changelog.py

CHANGE DETAILS

diff --git a/mercurial/changelog.py b/mercurial/changelog.py
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -54,18 +54,18 @@
         text = text.replace('\n', '')
     return stringutil.unescapestr(text)
 
-def decodeextra(text):
+def decodeextra(text, default):
     """
     >>> from .pycompat import bytechr as chr
-    >>> sorted(decodeextra(encodeextra({b'foo': b'bar', b'baz': chr(0) + b'2'})
-    ...                    ).items())
+    >>> sorted(decodeextra(encodeextra({b'foo': b'bar', b'baz': chr(0) + b'2'}),
+    ...                    _defaultextra).items())
     [('baz', '\\x002'), ('branch', 'default'), ('foo', 'bar')]
     >>> sorted(decodeextra(encodeextra({b'foo': b'bar',
-    ...                                 b'baz': chr(92) + chr(0) + b'2'})
-    ...                    ).items())
+    ...                                 b'baz': chr(92) + chr(0) + b'2'}),
+    ...                    _defaultextra).items())
     [('baz', '\\\\\\x002'), ('branch', 'default'), ('foo', 'bar')]
     """
-    extra = _defaultextra.copy()
+    extra = default
     for l in text.split('\0'):
         if l:
             k, v = _string_unescape(l).split(':', 1)
@@ -275,7 +275,7 @@
         if raw is None:
             return _defaultextra
 
-        return decodeextra(raw)
+        return decodeextra(raw, _defaultextra.copy())
 
     @property
     def files(self):



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list