obsolete: fix ValueError when stored note contains ':' char (issue5783)
authorZharaskhan Aman <aman.zharaskhan@gmail.com>
Fri, 05 Oct 2018 01:55:51 +0300
changeset 40081 a4d62ff9a86d
parent 40080 56d4f88530fc
child 40082 4fd0fac48922
obsolete: fix ValueError when stored note contains ':' char (issue5783) The newer version of `amend -n 'Some some'` accepts containing ':' char. The information contained in this note 'Testing::Obstore' gives ValueError, because we are trying to store more than 2 values in key and value. Differential Revision: https://phab.mercurial-scm.org/D4883 Differential Revision: https://phab.mercurial-scm.org/D4882
mercurial/obsolete.py
tests/test-obsolete.t
--- a/mercurial/obsolete.py	Fri Oct 05 16:06:51 2018 -0700
+++ b/mercurial/obsolete.py	Fri Oct 05 01:55:51 2018 +0300
@@ -278,7 +278,7 @@
     d = {}
     for l in data.split('\0'):
         if l:
-            key, value = l.split(':')
+            key, value = l.split(':', 1)
             d[key] = value
     return d
 
--- a/tests/test-obsolete.t	Fri Oct 05 16:06:51 2018 -0700
+++ b/tests/test-obsolete.t	Fri Oct 05 01:55:51 2018 +0300
@@ -1620,3 +1620,22 @@
   
 
   $ cd ..
+
+Test issue 5783
+
+  $ hg init issue-5783 --config format.obsstore-version=0
+  $ cd issue-5783
+  $ touch a.cpp
+  $ hg add a.cpp
+  $ hg commit -m 'Add a.cpp'
+  $ echo 'Hello' > a.cpp
+  $ hg amend -n 'Testing::Obsstore' --config format.obsstore-version=0 --config extensions.amend=
+  $ touch b.cpp
+  $ hg add b.cpp
+  $ hg commit -m 'Add b.cpp'
+  $ echo 'Hello' > b.cpp
+  $ hg amend -n 'Testing::Obsstore2' --config extensions.amend=
+  $ hg debugobsolete
+  d1b09fe3ad2b2a03e23a72f0c582e29a49570145 1a1a11184d2588af24e767e5335d5d9d07e8c550 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'note': 'Testing::Obsstore', 'operation': 'amend', 'user': 'test'}
+  1bfd8e3868f641e048b6667cd672c68932f26d00 79959ca316d5b27ac6be1dd0cfd0843a5b5412eb 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'note': 'Testing::Obsstore2', 'operation': 'amend', 'user': 'test'}
+  $ cd ..