SVN预提交钩子编码问题

4
我正在使用Python脚本实现SVN预提交钩子:

我正在使用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)

我在Windows Server 2008上托管的服务器中使用的pre-commit.bat文件如下:

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

在客户端上,我使用 TortoiseSVN

一切都很顺利,除了提交消息编码。如果提交消息包含例如俄文字母,则在Tortoise窗口中显示为“?”(问号)。


请不要在标题中写标签。 - Lightness Races in Orbit
2个回答

2
我认为这更多是.bat的问题,而不是Python脚本的问题,因为Python有出色的Unicode支持。
也许这个问题的答案可以帮助你。
Batch file encoding

在这里添加“chcp 1251”或“chcp 65001”行在bat文件中不起作用。 - alexey

0

问题可能出在Tortoise本身。请尝试以下操作:

svn log http://rev_url

并查看svn所显示的日志注释。如果它正确显示了,那么很可能是Tortoise无法显示俄语编码。如果您在没有pre-commit hook的情况下提交,会发生什么?它是否能够正确显示?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接