Mercurial > hg
diff hgext/convert/p4.py @ 25884:b810b59eca62 stable
convert: when converting from Perforce use original local encoding by default
On Windows Perforce command line client uses default system locale to encode
output. Using 'latin_1' causes locale-specific characters to be replaced with
question marks. With this patch we will use default locale by default whilst
allowing to specify it explicity with 'convert.p4.encoding' config option.
This is a potentially breaking change for any scripts relying on output treated
as in 'latin_1' encoding.
Also because hgext.convert.convcmd overwrites detected default system locale
with UTF-8 we had to introduce an import cycle in hgext.convert.p4 to retrieve
originally detected encoding from hgext.convert.convcmd.
author | Eugene Baranov <eug.baranov@gmail.com> |
---|---|
date | Wed, 22 Jul 2015 16:57:11 +0100 |
parents | 97a9f7602014 |
children | 56b2bcea2529 |
line wrap: on
line diff
--- a/hgext/convert/p4.py Thu Jul 30 00:58:05 2015 +0100 +++ b/hgext/convert/p4.py Wed Jul 22 16:57:11 2015 +0100 @@ -39,6 +39,9 @@ class p4_source(converter_source): def __init__(self, ui, path, revs=None): + # avoid import cycle + import convcmd + super(p4_source, self).__init__(ui, path, revs=revs) if "/" in path and not path.startswith('//'): @@ -54,7 +57,8 @@ self.tags = {} self.lastbranch = {} self.parent = {} - self.encoding = "latin_1" + self.encoding = self.ui.config('convert', 'p4.encoding', + default=convcmd.orig_encoding) self.depotname = {} # mapping from local name to depot name self.localname = {} # mapping from depot name to local name self.re_type = re.compile(