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(