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):