7 votes

Messages de livraison Mercurial et journal, quel encodage est supporté, est-ce que Hg s'en préoccupe ?

J'ai essayé de faire un simple commit à travers ma bibliothèque de wrapper pour Mercurial, en utilisant le texte simple de Unicode:æøåÆØÅ comme message de validation. Celui-ci est écrit dans un fichier texte et transmis à Mercurial avec le paramètre approprié :

hg commit --logfile FILE

Si je regarde ensuite le dépôt avec TortoiseHg, les caractères sont reproduits correctement. Sur la Console, ils sont déformés :

\[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 je redirige la sortie de hg log à un fichier et l'ouvrir, æøåÆØÅ est reproduit correctement.

Ma question est donc la suivante :

  • Puis-je demander hg pour écrire le journal dans un fichier directement, ou dois-je rediriger la sortie standard ?
  • Cela posera-t-il des problèmes avec l'encodage de python pour la console, c'est-à-dire que certains caractères rendront hg au lieu de se contenter d'altérer la sortie ?
  • Existe-t-il un encodage connu pour les messages de validation que je devrais respecter ?

Ou est-ce aussi simple que cela ?

  • Mercurial s'en moque, il prend le contenu du fichier que je lui donne, quel qu'il soit, et le stocke en tant que message de validation. Lorsqu'il produit le journal, il le renvoie simplement à la console, en proie aux limitations de la bibliothèque de sortie de la console Python à cet égard ?

9voto

pyfunc Points 31088

Les éléments suivants ne résoudront peut-être pas le problème, mais ils peuvent aider à le résoudre.

Vérifier : https://www.mercurial-scm.org/wiki/EncodingStrategy

Si je redirige la sortie de hg log vers un fichier, et que je l'ouvre, æøåÆØÅ est reproduit correctement.

Au moins, mercurial stocke correctement les informations sur les livraisons. C'est seulement la sortie qui est perturbée.

Des travaux sont en cours dans ce sens, mais ils ne sont pas liés à ce projet.

[Edit : J'ai manqué le fait que vous êtes sous Windows].

Voir le dernier paragraphe sur la façon de traiter les problèmes de compatibilité des jeux de caractères : https://www.mercurial-scm.org/wiki/CharacterEncodingOnWindows

Il est écrit :

  • régler la page de code de la console pour qu'elle corresponde à la page de code du système
  • remplacer l'encodage de Mercurial par une variable d'environnement
    • Le réglage de HGENCODING remplace le jeu de caractères du système détecté.
  • remplacer l'encodage de Mercurial par une option de ligne de commande
    • L'utilisation de l'option globale --encoding vous permettra de définir votre encodage préféré pour chaque commande.
  • utiliser des outils basés sur l'interface graphique pour interagir avec Mercurial
    • Cela permet également d'éliminer le problème, en supprimant complètement cette console gênante.
  • utiliser Linux/UNIX et UTF-8
    • Cela fait pleurer Bill Gates.

0voto

domih Points 159

Si vous utilisez git bash pour hg vous pouvez définir l'option Jeu de caractères a ISO-8859-1 pour corriger ces caractères gênants dans votre journal hg.

Pour ce faire, allez dans les options de git bash en cliquant sur l'icône en haut à gauche de la fenêtre de git bash. * select options * Sélectionnez Texte * En bas de l'écran, définissez l'option Jeu de caractères a ISO-8859-1

Je sais que cela fait mal, mais cela fonctionne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X