[PATCH 2 of 8] determine default locale encoding and stdio encoding on start-up

Andrey grooz-work at gorodok.net
Mon Nov 20 12:05:28 CST 2006


On 20 November 2006 (Mon) 23:36, Matt Mackall wrote:
> I'm afraid this config approach doesn't really work.
>
> When you're likely to need to tweak this, you're like to need it to
> have several settings. Consider:
>
> Laptop: runs modern all UTF-8 distro
> Home machine: runs with a Russian character set
> Work machine: runs with ASCII/Latin-1
>
> Now you can sit down at your desk at work with your laptop, and ssh
> from both your laptop and your work machine back to your home machine
> and suddenly things get complicated. If you override settings in
> .hgrc, you'll break something on another machine. That's because
> encoding is a property of the terminal session and not the machine it
> happens to be running on.

Exactly the same happens if you have some non-Latin file names or some of your 
programs emit non-Latin messages. I have to deal with that a lot and I just 
use a terminal emulator that does encoding conversion for me. I have also 
seen some wrapper scripts for ssh that do transparent encoding conversion. Or 
you can export LANG=<whatever you like> on remote machine. In fact, almost 
all *NIX programs are designed to output texts in locale encoding and never 
think of broken terminal encodings and other complex things, and so should 
we.

> Which means this should all move out of ui and into util!

Would be nice indeed, but I could not find a way to access config settings 
from util without explicitly passing an ui object to every function or some 
other unnecessary complications. Or you still want to get rid of that config 
options at all?

Andrey


More information about the Mercurial-devel mailing list