##// END OF EJS Templates
pycompat: stop setting LC_CTYPE unconditionally...
pycompat: stop setting LC_CTYPE unconditionally Changeset a25343d16ebe aimed to align how LC_CTYPE is initialized across Python versions. However, as Yuya Nishihara pointed out, it changes the behavior of some str methods on Python 2. Curses requires that LC_CTYPE is initialized correctly. Therefore LC_CTYPE is set while curses is used and reset afterwards. It shouldn’t be a problem that some str methods behave differently on Python 2 while curses is used. At least it’s not a regression compared to what was done before d2227d4c9e6b. This again breaks non-ASCII filenames passed to the Subversion bindings on Python 2. Since it didn’t work before a25343d16ebe, it’s however not really a regression. A separate patch will be sent.

File last commit:

r44968:ec54b3d2 default
r45545:90409803 default
Show More
gitutil.py
40 lines | 866 B | text/x-python | PythonLexer
"""utilities to assist in working with pygit2"""
from __future__ import absolute_import
from mercurial.node import bin, hex, nullid
from mercurial import pycompat
pygit2_module = None
def get_pygit2():
global pygit2_module
if pygit2_module is None:
try:
import pygit2 as pygit2_module
pygit2_module.InvalidSpecError
except (ImportError, AttributeError):
pass
return pygit2_module
def togitnode(n):
"""Wrapper to convert a Mercurial binary node to a unicode hexlified node.
pygit2 and sqlite both need nodes as strings, not bytes.
"""
assert len(n) == 20
return pycompat.sysstr(hex(n))
def fromgitnode(n):
"""Opposite of togitnode."""
assert len(n) == 40
if pycompat.ispy3:
return bin(n.encode('ascii'))
return bin(n)
nullgit = togitnode(nullid)