2011-06-13 3 views
4

J'utilise script Python pour mettre en œuvre pre-commit hook SVN:pre-commit hook SVN encodage

svnlookPath = 'path-to-svnlook' 

f = subprocess.Popen([svnlookPath, 'log', sys.argv[1], '--transaction', sys.argv[2]], stdout=subprocess.PIPE).stdout 
commitMessage = f.read() 
f.close() 
commitMessage = commitMessage.rstrip('\n\r') 

print >> sys.stderr, 'Commit message: "' + commitMessage + '"' 
sys.exit(1) 

Mon pré-commit.bat (serveur est hébergé sur Windows Server 2008):

@python.exe path-to-py-file %1 %2 

Sur un côté client j'utilise TortoiseSVN.

Tout va bien, sauf le message de validation codant. Si le message de validation contient, par exemple, des lettres russes, elles sont affichées comme '?' (points d'interrogation) dans la fenêtre Tortoise.

+0

Arrêtez d'écrire des étiquettes dans les titres s'il vous plaît. –

Répondre

2

Je dirais que c'est plus la faute du .bat alors du script python, car python a un excellent support unicode.
Peut-être que la réponse à cette question peut vous aider.

Batch file encoding

+0

L'ajout de la ligne 'chcp 1251' ou 'chcp 65001' dans le fichier bat ne fonctionne pas ici. – alexey

0

Le problème pourrait être la tortue lui-même. Effectuez les opérations suivantes

svn log http://rev_url

et voir ce que svn dit le commentaire du journal est. Si ça se passe bien, c'est probablement Tortoise qui ne montre pas l'encodage russe. Que se passe-t-il si vous vous engagez sans votre hook de pré-commit? Est-ce que cela se voit correctement?

+0

Oui, tous les commentaires sont affichés correctement sans crochet de pré-validation. – alexey