[PATCH 3 of 7] py3: make scmpoxis.systemrcpath() return bytes

Pulkit Goyal 7895pulkit at gmail.com
Wed Nov 2 18:23:08 EDT 2016


# HG changeset patch
# User Pulkit Goyal <7895pulkit at gmail.com>
# Date 1478119178 -19800
#      Thu Nov 03 02:09:38 2016 +0530
# Node ID 9d54c24d17daddf2ede7fe7ce58751ab9a1780a4
# Parent  6585e9c1d915818d5138f6cb4134707002d5d749
py3: make scmpoxis.systemrcpath() return bytes

The variable `p` is a str on Python 3 which is not bytes. We should convert
it to bytes because
1. root is bytes and we want the final output in bytes
2. to make the if condition works fine because in py3 its p != b'/'

So even if p is '/' but left as a str on py3, will make the condition false.
This patch ensures that scmposix.systemrcpath() return bytes and also
scmposix._rcfiles() returns and accepts bytes. The later is used in
scmposix.py only.

diff -r 6585e9c1d915 -r 9d54c24d17da mercurial/scmposix.py
--- a/mercurial/scmposix.py	Thu Nov 03 01:55:44 2016 +0530
+++ b/mercurial/scmposix.py	Thu Nov 03 02:09:38 2016 +0530
@@ -27,6 +27,8 @@
     # old mod_python does not set sys.argv
     if len(getattr(sys, 'argv', [])) > 0:
         p = os.path.dirname(os.path.dirname(sys.argv[0]))
+        if not isinstance(p, bytes):
+            p = p.encode('utf-8')
         if p != '/':
             path.extend(_rcfiles(os.path.join(p, root)))
     path.extend(_rcfiles('/' + root))


More information about the Mercurial-devel mailing list