SVN 提交前钩子的编码问题

4 投票
2 回答
2366 浏览
提问于 2025-04-16 19:27

我正在用Python脚本来实现SVN的预提交钩子

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)

我的pre-commit.bat文件(服务器托管在Windows Server 2008上):

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

在客户端,我使用TortoiseSVN

一切都很顺利,除了提交信息的编码问题。如果提交信息里包含俄文字母,比如说,它们在Tortoise窗口里会显示成'?'(问号)。

2 个回答

0

这个问题可能是出在Tortoise这个工具上。你可以试试下面的命令:

svn log http://rev_url

看看svn会给你什么样的日志评论。如果它显示正确,那可能就是Tortoise没有正确显示俄文编码。那如果你在没有使用预提交钩子的情况下提交,会显示正确吗?

2

我觉得这更多是.bat文件的问题,而不是Python脚本的问题,因为Python对Unicode的支持非常好。
也许这个问题的答案能帮到你。

批处理文件编码

撰写回答