2010-12-01 10 views
6

Intenté hacer una confirmación simple a través de mi biblioteca contenedora para Mercurial, usando el texto simple de Unicode:æøåÆØÅ como mensaje de confirmación. Esto se escribe en un archivo de texto y se le dio en Mercurial con el parámetro apropiado:Mercurial commit messages and log, what encoding is supported, does hg care?

hg commit --logfile FILE 

Si posteriormente miro el repositorio con TortoiseHg, los personajes se reproducen correctamente. En la consola, son mutilados:

 
[C:\Temp] :hg log 
changeset: 0:6a0911410128 
tag:   tip 
user:  Lasse V. Karlsen 
date:  Wed Dec 01 21:48:54 2010 +0100 
summary:  Unicode:æøåÆØÅ 

Si vuelvo a dirigir la salida de hg log a un archivo, y se abre, æøåÆØÅ se reproduce correctamente.

lo tanto, mi pregunta es la siguiente:

  • ¿Puedo pedir hg para escribir el registro en un archivo directamente, o tengo que redirigir la salida estándar?
  • Esto causará problemas con la codificación python para la consola, es decir. algunos caracteres harán que hg se bloquee en lugar de solo modificar la salida?
  • ¿Existe una codificación soportada conocida para los mensajes de confirmación que debo cumplir?

O es sólo esta sencilla:

  • Mercurial no le importa, toma el contenido del archivo se lo doy, sea cual sea el contenido, y las tiendas que a medida que el mensaje de confirmación. Al producir el registro, simplemente lo volcará a la consola presa de las limitaciones que tenga la biblioteca de salida de la consola de Python a este respecto.

Respuesta

8

No podrán resolver el problema, pero puede ayudar a depurarlo.

Salida: https://www.mercurial-scm.org/wiki/EncodingStrategy

Si vuelvo a dirigir la salida de hg log en un archivo, y se abre, æøåÆØÅáéíóúñÁÉÍÓÚÑ¡¿ se reproduce correctamente.

Así que al menos mercurial está almacenando la información de confirmación correctamente. Es solo la salida la que está mal.

Algunos trabajos sucediendo a lo largo de estas líneas, pero no está relacionado con este

[Editar: Missed el hecho de que se encuentra en Windows]

Ver el último párrafo sobre cómo para tratar con problemas de compatibilidad de conjunto de caracteres: https://www.mercurial-scm.org/wiki/CharacterEncodingOnWindows

Dice:

  • configurar su página de códigos de la consola para que coincida con la página de códigos del sistema
  • anulación de codificación de Mercurial con una variable de entorno
    • Configuración HGENCODING anulará el conjunto de caracteres del sistema detectada.
  • anulación de codificación de Mercurial con una opción de línea de comandos
    • El uso de la opción global --encoding le permitirá configurar la codificación deseada en cada comando.
  • uso de herramientas basadas en GUI para interactuar con Mercurial
    • Esto también elimina el problema, mediante la eliminación de esa consola molestos por completo.
  • uso de Linux/UNIX y UTF-8
    • Esto hace que Bill Gates grito.
+0

No aplicable: está usando Windows ('C: \ Temp'). @Lasse: ¿qué consola estás usando? (Su solicitud no es la solicitud predeterminada del símbolo del sistema.) –

+0

Responda el comando, pero ¿eso importa? Estoy generando el programa de .net y supongo (que es malo) que usa cmd. Lo revisaré mañana, solo leo en mi iPad antes de ir a la cama ahora. –

+0

También tenga en cuenta que con el comando PROMPT uno puede cambiar el texto del símbolo del sistema, si eso es lo que recogió. –

Cuestiones relacionadas