Show More
@@ -23,6 +23,20 b' def loaditer(f):' | |||||
23 | except EOFError: |
|
23 | except EOFError: | |
24 | pass |
|
24 | pass | |
25 |
|
25 | |||
|
26 | def decodefilename(filename): | |||
|
27 | """Perforce escapes special characters @, #, *, or % | |||
|
28 | with %40, %23, %2A, or %25 respectively | |||
|
29 | ||||
|
30 | >>> decodefilename('portable-net45%252Bnetcore45%252Bwp8%252BMonoAndroid') | |||
|
31 | 'portable-net45%2Bnetcore45%2Bwp8%2BMonoAndroid' | |||
|
32 | >>> decodefilename('//Depot/Directory/%2525/%2523/%23%40.%2A') | |||
|
33 | '//Depot/Directory/%25/%23/#@.*' | |||
|
34 | """ | |||
|
35 | replacements = [('%2A', '*'), ('%23', '#'), ('%40', '@'), ('%25', '%')] | |||
|
36 | for k, v in replacements: | |||
|
37 | filename = filename.replace(k, v) | |||
|
38 | return filename | |||
|
39 | ||||
26 | class p4_source(converter_source): |
|
40 | class p4_source(converter_source): | |
27 | def __init__(self, ui, path, revs=None): |
|
41 | def __init__(self, ui, path, revs=None): | |
28 | super(p4_source, self).__init__(ui, path, revs=revs) |
|
42 | super(p4_source, self).__init__(ui, path, revs=revs) | |
@@ -138,7 +152,7 b' class p4_source(converter_source):' | |||||
138 | filename = None |
|
152 | filename = None | |
139 | for v in vieworder: |
|
153 | for v in vieworder: | |
140 | if oldname.lower().startswith(v.lower()): |
|
154 | if oldname.lower().startswith(v.lower()): | |
141 | filename = views[v] + oldname[len(v):] |
|
155 | filename = decodefilename(views[v] + oldname[len(v):]) | |
142 | break |
|
156 | break | |
143 | if filename: |
|
157 | if filename: | |
144 | files.append((filename, d["rev%d" % i])) |
|
158 | files.append((filename, d["rev%d" % i])) |
@@ -33,5 +33,6 b" testmod('mercurial.util')" | |||||
33 | testmod('mercurial.util', testtarget='platform') |
|
33 | testmod('mercurial.util', testtarget='platform') | |
34 | testmod('hgext.convert.cvsps') |
|
34 | testmod('hgext.convert.cvsps') | |
35 | testmod('hgext.convert.filemap') |
|
35 | testmod('hgext.convert.filemap') | |
|
36 | testmod('hgext.convert.p4') | |||
36 | testmod('hgext.convert.subversion') |
|
37 | testmod('hgext.convert.subversion') | |
37 | testmod('hgext.mq') |
|
38 | testmod('hgext.mq') |
General Comments 0
You need to be logged in to leave comments.
Login now