我有一个提交后钩子脚本,当对存储库进行提交时,该脚本执行工作副本的SVN更新。
当用户使用TortoiseSVN从Windows计算机提交到存储库时,他们会收到以下错误消息:
post-commit hook failed (exit code 1) with output: svn: Error converting entry in directory '/home/websites/devel/website/guides/Images' to UTF-8 svn: Can't convert string from native encoding to 'UTF-8': svn: Teneriffa-S?\195?\188d.jpg
上面有问题的文件是:Teneriffa-Süd.jpg注意带重音符号的u。这是因为该站点是德语,并且文件是用德语拼写的。
Teneriffa-Süd.jpg
在Linux命令行上对工作副本执行更新时,不会遇到错误。仅当Windows SVN客户端通过提交执行提交后挂接时,才会出现上述错误。
问题:
更新:
事实证明,有问题的文件名正确显示为Teneriffa- Süd.jpg从Windows计算机(通过Samba)查看时,但是当我从文件所在的Linux服务器(使用SSH和PuTTY)查看文件名时,Teneriffa- Süd.jpg
Teneriffa- Süd.jpg
Teneriffa- Süd.jpg
编辑添加:
啊。我误解了症状。svn服务器将所有内容存储在utf-8中(似乎成功完成了此操作)。
提交后挂钩是无法从UTF-8转换的位。如果我正确理解您的意思,则服务器上的提交后挂钩会触发对共享驱动器的svn更新(因此svn服务器会向自身启动svn客户端…)?这意味着需要固定的配置是 服务器上 客户端 的配置 。 在执行svn服务器的环境中检查LANG / LC_ALL。 。碰巧的是,挂钩在真空环境中运行(请参阅技巧)。因此,您应该在挂钩本身中设置变量。
另请参阅此页面以获取有关svn如何处理本地化的信息