кодировка "svnlook change" - PullRequest
1 голос
/ 01 мая 2009

Когда я выполняю следующую команду:

svnlook changed {path} -r {rev}

где {путь} - это путь к хранилищу, а {rev} - номер редакции, я получаю следующий вывод:

U trunk/this/is/a/path/Mon fichier avec un nom accentu,.txt

Выходные данные должны быть:

U trunk/this/is/a/path/Mon fichier avec un nom accentué.txt

Символ "é" и другие акцентированные символы не отображаются должным образом ...

Есть ли способ для svnlook правильно выводить символы?

Я знаю, что могу использовать «svn log» с опцией «--xml», чтобы получить правильную кодировку, но мне это нужно для ловушки перед фиксацией, а svn.exe может получать информацию только из ревизий, а не транзакций .

Спасибо

Ответы [ 2 ]

2 голосов
/ 01 мая 2009

Проблема, с которой вы столкнулись, заключается в том, что ваша ловушка перед фиксацией запускается двоичным файлом Subversion, который по соображениям безопасности передает пустую среду скрипту ловушки. Среди вещей, которые делает пустая среда, это удаление любых определенных настроек локали, возвращая вас к системным настройкам по умолчанию (обычно «C» или что-то подобное).

Чтобы получить правильный вывод из svnlook, вам необходимо восстановить среду, которая вас интересует, прежде чем запускать ее. Если ваш скрипт bash, возможно что-то вроде:

#!/bin/bash

export LANG="en_US.UTF-8"
export PATH="/bin:/usr/bin"

# Run svnlook here and get UTF-8 encoded output

В общем, любая локаль с суффиксом .UTF-8 должна быть в порядке. Учитывая, что вы говорите по-французски, локаль 'fr_FR.UTF-8' была бы разумной настройкой.

0 голосов
/ 01 мая 2009

Вы должны попробовать вызвать это:

export LANG="fr_FR"

(или любой другой язык вашего разработчика) перед использованием svnlook. Вы также можете установить язык по умолчанию в своих скриптах запуска оболочки, чтобы вам не приходилось каждый раз экспортировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...