Comments
Patch
@@ -5,7 +5,7 @@
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
-import base64, errno, subprocess, os, datetime
+import base64, errno, subprocess, os, datetime, shlex
import cPickle as pickle
from mercurial import util
from mercurial.i18n import _
@@ -437,9 +437,9 @@
# Ignore blank lines
continue
try:
- child, parents = line.split(' ', 1)
- parents = parents.replace(',', ' ').split()
- except ValueError:
+ line = shlex.split(line.replace(',', ' '), posix=False)
+ child, parents, p = line[0], line[1:], line[1]
+ except IndexError:
raise util.Abort(_('syntax error in %s(%d): child parent1'
'[,parent2] expected') % (path, i + 1))
pp = []
@@ -220,3 +220,35 @@
scanning source...
abort: unknown splice map parent:
deadbeef102a90ea7b4a3361e4082ed620918c26
[255]
+
+Test parsesplicemap
+
+ >>> from hgext.convert.common import parsesplicemap
+ >>> lines = r'''
+ ... /dummy/path/child /dummy/path/parent1, /dummy/path/parent2
+ ... /dummy/path/child /dummy/path/parent1 /dummy/path/parent2
+ ... "/dummy/s p a c e/child" "/dummy/s p a c e/p1" "/dummy/s p a c
e/p2"
+ ... C:\dummy\path\child C:\dummy\path\parent1, C:\dummy\path\parent2
+ ... C:\dummy\path\child C:\dummy\path\parent1 C:\dummy\path\parent2
+ ... "C:\dummy\s p a c e\child" "C:\dummy\s p a c e\p1" "C:\dummy\s p a
c e\p2"
+ ... /dummy/path/child
+ ... "C:\dummy\s p a c e\child"
+ ... '''
+ >>> lines = [line.strip() for line in lines.splitlines() if line]
+ >>> for i, line in enumerate(lines):
+ ... fn = 'splicemap%d' % i
+ ... fp = open(fn, 'w')
+ ... fp.write(line.strip())
+ ... fp.close()
+ ... try:
+ ... print parsesplicemap(fn)
+ ... except Exception as e:
+ ... print '%s: %s' % (e.__class__.__name__, e)
+ {'/dummy/path/child': ['/dummy/path/parent1', '/dummy/path/parent2']}
+ {'/dummy/path/child': ['/dummy/path/parent1', '/dummy/path/parent2']}
+ {'"/dummy/s p a c e/child"': ['"/dummy/s p a c e/p1"', '"/dummy/s p a c
e/p2"']}
+ {'C:\\dummy\\path\\child': ['C:\\dummy\\path\\parent1',