view hg @ 16230:d4d35fd0889d stable

update: don't translate the abort message twice The string representation of util.Abort() is translated when merge.update() raises the exception. For languages with characters out of the valid ascii range, if we feed them again to i18n.gettext() mercurial dies with: [...] File "/home/javi/src/mercurial/mercurial/hg-mpm/mercurial/commands.py", line 4287, in postincoming ui.warn(_("not updating: %s\n" % str(inst))) File "/home/javi/src/mercurial/mercurial/hg-mpm/mercurial/i18n.py", line 42, in gettext u = u'\n\n'.join([p and t.ugettext(p) or '' for p in paragraphs]) File "/usr/lib/python2.7/gettext.py", line 404, in ugettext return unicode(message) UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 14: ordinal not in range(128) To reproduce this error, just try to pull a changeset that crosses branches with LANG=ru_RU.UTF-8
author Javi Merino <cibervicho@gmail.com>
date Wed, 07 Mar 2012 23:21:11 +0000
parents 659f34b833b9
children 73e4a02e6d23
line wrap: on
line source

#!/usr/bin/env python
#
# mercurial - scalable distributed SCM
#
# Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

import os
import sys

libdir = '@LIBDIR@'

if libdir != '@' 'LIBDIR' '@':
    if not os.path.isabs(libdir):
        libdir = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                              libdir)
        libdir = os.path.abspath(libdir)
    sys.path.insert(0, libdir)

# enable importing on demand to reduce startup time
try:
    from mercurial import demandimport; demandimport.enable()
except ImportError:
    import sys
    sys.stderr.write("abort: couldn't find mercurial libraries in [%s]\n" %
                     ' '.join(sys.path))
    sys.stderr.write("(check your install and PYTHONPATH)\n")
    sys.exit(-1)

import mercurial.util
import mercurial.dispatch

for fp in (sys.stdin, sys.stdout, sys.stderr):
    mercurial.util.setbinary(fp)

mercurial.dispatch.run()