“svnlook改变了”编码

时间:2009-04-30 20:24:18

标签: svn character-encoding

执行以下命令时:

svnlook changed {path} -r {rev}

其中{path}是存储库路径,{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 个答案:

答案 0 :(得分:2)

你在这里遇到的问题是你的预提交钩子是由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'语言环境将是一个合理的设置。

答案 1 :(得分:0)

你应该尝试调用它:

export LANG="fr_FR"
在使用svnlook之前,

(或任何开发人员的语言)。您还可以在shell启动脚本中设置默认语言,因此您不必每次都将其导出。