我有一个提交后钩子脚本,当提交到存储库时,它会对工作副本执行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.这是因为该网站是德语,文件是用德语拼写的.

在Linux命令行上对工作副本执行更新时,不会遇到任何错误.只有在Windows SVN客户端通过提交执行提交后钩子时,上述错误才会存在.

问题:

  1. 为什么SVN会try 更改文件的编码?
  2. 文件名是否允许包含Windows标准ASCII字符以外的字符?

更新:

事实证明,当从Windows机器(通过Samba)查看该文件时,该文件的文件名正确显示为Teneriffa-Süd.jpg,但当我从文件所在的Linux服务器(使用SSH和PuTTY)查看文件名时,我得到了Teneriffa-Süd.jpg

推荐答案

  1. 它不会更改文件的编码.它改变了文件名的编码(希望每个客户都能理解).
  2. 谁允许的?NTFS使用16位代码点,Windows可以根据您的要求以不同的编码公开文件名(它将try 将文件名转换为您要求的编码).现在这一点(如何提问)取决于您使用的特定svn客户端.在我看来,这就像乌龟身上的虫子.

编辑以添加:

啊.我误解了症状.svn服务器将所有内容存储在utf-8中(似乎它成功地做到了这一点).

提交后钩子是无法从UTF-8转换的位.如果我理解正确,服务器上的post-commit钩子会触发对共享驱动器的svn更新(svn服务器因此会启动一个svn客户机……)?这意味着需要固定的配置是客户端on the server的配置.

关于svn如何处理本地化的信息,请参见this page

Linux相关问答推荐

IntelliJ(PyCharm)不再识别Linux中的AltGr快捷键

为什么在已连接的设备上调用 btmgmt conn-info 返回:状态 0x02(未连接)

AWK:按第一列匹配两个文件不起作用

在 bash 脚本中保持两个进程处于活动状态(并在死亡时重生它们)

仅在 Linux 上出现 AWS RDS `flush tables` 错误的 mysqldump

如何使用 ftrace 过滤查看函数上方的调用堆栈?

ftell 在文件描述符上?

使用 gdb 将地址转换为行

如何使用该位置的相对路径在单个位置创建多个文件夹?

/usr/local/bin/ 中Collection的权限被拒绝

在 Python 上模拟鼠标点击

linux远程执行命令

Linux命令删除.git文件夹以外的所有文件?

如何查看安装的 pip 包大小?

Linux AMD64 中如何使用 fs/gs 寄存器?

/var 中有什么?

如何将路径名中的..转换为 bash 脚本中的绝对名称?

如何自动启动 Solr?

内联 if shell 脚本

如何通过命令行识别特定的 Linux 风格?