Pergunta

Quando eu execute o seguinte comando:

svnlook changed {path} -r {rev}

onde {path} é o caminho do repositório e {rev} é o número de revisão, eu recebo o seguinte resultado:

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

A saída deve realmente ser:

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

O "E" e outros caracteres acentuados não são exibidos corretamente ...

Existe alguma maneira para svnlook para caracteres de saída corretamente?

Eu sei que eu posso usar "log svn" com a opção "--xml" para obter a codificação adequada, mas eu preciso disso para um gancho pre-commit, e svn.exe só pode obter informações de revisões, não transações .

Graças

Foi útil?

Solução

O problema que temos aqui é que o gancho pre-commit é executado pelo binário do Subversion, que por razões de segurança passa um ambiente vazio para o script de gancho. Entre as coisas um ambiente vazio faz é remover quaisquer configurações específicas do local, revertendo-lo para o sistema padrão (geralmente 'C' ou algo similar).

Para obter o resultado correto svnlook, você precisa restaurar o ambiente você se preocupa antes de executá-lo. Se o seu script é bash, talvez algo como:

#!/bin/bash

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

# Run svnlook here and get UTF-8 encoded output

Em geral, qualquer local com o sufixo' .UTF-8' deve ser fino. Dado que você parece ser um falante de francês, o local 'fr_FR.UTF-8' seria um ajuste razoável.

Outras dicas

Você deve tentar invocar esta:

export LANG="fr_FR"

(ou qualquer outra língua do seu desenvolvedor é) antes de usar svnlook. Você também pode definir um padrão lang em seus scripts de inicialização de shell, então você não tem que exportá-lo o tempo todo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top