From patchwork Fri May 3 15:42:42 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: splicemap: support for path with spaces in splicemap (issue3844) From: =?utf-8?q?Szymon_Wr=C3=B3blewski?= X-Patchwork-Id: 1540 Message-Id: To: Kevin Bullock Cc: mercurial-devel Date: Fri, 3 May 2013 17:42:42 +0200 > Patch doesn't apply cleanly (appears to have some mailer-induced damage). Please consider using the patchbomb extension . I forgot to send mail in plain text mode in gmail. Sorry. I'll try to use Patchbomb extension next time. > When re-sending, we also generally use the --flag option to mark a patch/series V2, V3, etc. For the sake of discussion continuation I'll use reply for the last time. As I understand future patch versions should be sent as a new thread with [PATCH Vx] in topic, right? > As mentioned on , we vaguely follow PEP8 where whitespace and line length are concerned: I know, that is why I corrected recently accepted code in repo to follow PEP8 specification. Without further talking, here is latest patch again. # HG changeset patch # User Szymon Wroblewski # Date 1367547396 -7200 # Node ID 084dfca47663a7f65c1c5eaa919545e95bbf99e4 # Parent 4cdec37f0018e361e8159632ec5afeb705c433b1 splicemap: support paths with spaces in splicemap (issue3844) Shlex module was used to split line as suggested. Split operates in POSIX mode. diff -r 4cdec37f0018 -r 084dfca47663 hgext/convert/convcmd.py --- a/hgext/convert/convcmd.py Sat Apr 27 23:49:34 2013 -0700 +++ b/hgext/convert/convcmd.py Fri May 03 04:16:36 2013 +0200 @@ -17,7 +17,7 @@ from p4 import p4_source import filemap -import os, shutil +import os, shutil, shlex from mercurial import hg, util, encoding from mercurial.i18n import _ @@ -142,26 +142,18 @@ if not line: # Ignore blank lines continue - try: - child, parents = line.split(' ', 1) - self.source.checkrevformat(child) - parents = parents.replace(',', ' ').split() - # check if number of parents are upto 2 max - if (len(parents) > 2): - raise util.Abort(_('syntax error in %s(%d): child '\ - 'parent1[,parent2] expected') \ - % (path, i + 1)) - for parent in parents: - self.source.checkrevformat(parent) - except ValueError: - raise util.Abort(_('syntax error in %s(%d): child '\ - 'parent1[,parent2] expected') \ - % (path, i + 1)) - pp = [] - for p in parents: - if p not in pp: - pp.append(p) - m[child] = pp + line = shlex.split(line.replace(',', ' ')) + # check number of parents + if not (2 <= len(line) <= 3): + raise util.Abort(_('syntax error in %s(%d): child parent1' + '[,parent2] expected') % (path, i + 1)) + for part in line: + self.source.checkrevformat(part) + child, p1, p2 = line[0], line[1:2], line[2:] + if p1 == p2: + m[child] = p1 + else: + m[child] = p1 + p2 # if file does not exist or error reading, exit except IOError: raise util.Abort(_('splicemap file not found or error reading %s:')