如何在 SVN 操作期间将所有行结尾转换为 CRLF、LF 或 CR
-
08-06-2019 - |
题
因此,您已准备好进行大型 SVN 提交,但它会失败,因为某些文件中的行结尾不一致。有趣的是,您正在查看跨越数十个不同深度的文件夹的 1,000 个文件。
你做什么工作?
其他提示
首先是清理一切。您使用的是 Windows 还是 Unix/Linux/Mac?
如果你使用的是 Unix/Linux/Mac,你可以尝试这样的操作:
$ find . -type f -name "*.java" -exec dos2unix {}\;
那就是如果你有 dos2unix
在你的盒子上。它不在我的 Mac 上,也不在我们拥有的六台 Linux 机器上。看来我们没有安装这个特定的软件包。幸运的是,它很容易找到。
使用它时要小心,因为您不想修改二进制文件。
清理完所有内容后,您应该将 svn:eol-style
您的文件上的属性。将其设置为 本国的 将检出具有适合您的计算机的正确行结尾的文件,但将它们存储为 Unix 行结尾格式。其他三个选项是“LF”(适用于 Unix)、“CRLF”(适用于 Windows)和“CR”(适用于 Mac OS X 之前的 Mac)。大多数人认为“本土”的锻炼效果最好。Native 的唯一问题是它不会签入具有混合行结尾的文件,而“LF”和“CRLF”则会签入。
一旦你这样做了,你应该得到一个 预提交钩子 这将允许您在特定文件上强制执行行结尾。然后,教您的开发人员使用 自动属性. 。预提交挂钩将阻止任何提交,除非该属性放置在文件上。开发人员的提交被拒绝一两次,他们将自行设置自动属性。
添加一个 预提交钩子 它会解析文件内容并在将其写入 SVN 之前为您执行 CRLF/LF/CR 等的修改。
您可以考虑使用类似 Linux 的命令 DOS2UNIX 用于转换。作为一个 Linux 命令,很容易在批处理模式下通过脚本等使用它。我不知道其他操作系统是否有等效的。