所以,你们都准备好做一个大的SVN提交并且因为你的某些文件中的行结尾不一致而爆炸.有趣的是,您正在查看跨越数十个不同深度文件夹的1,000个文件.
你是做什么?
我不认为预提交挂钩实际上可以更改正在提交的数据 - 它可以禁止提交,但我不认为它可以为您进行转换.
听起来你想要将属性 'svn:eol-style'设置为'native' - 这会自动将换行符转换为你平台上使用的任何东西(使用'CRLF','CR'或'LF'来获取那些不管你的操作系统想要什么).
您可以使用自动属性,以便您创建的所有未来文件都将设置此属性(自动道具在客户端处理,因此您必须为每个用户设置此属性).
首先是清理一切.你在Windows或Unix/Linux/Mac上吗?
如果您使用的是Unix/Linux/Mac,可以尝试这样的方法:
$ find . -type f -name "*.java" -exec dos2unix {}\;
如果你有dos2unix
你的盒子就好了.它不在我的Mac或我们拥有的六台Linux机器中.好像我们没有安装这个特定的包.幸运的是,它很容易找到.
小心使用它,因为你不想破坏二进制文件.
一旦清理了所有内容,就应该将svn:eol-style
属性放在文件上.将其设置为本机将使用正确的行结束为您的计算机签出文件,但将它们存储在Unix行结束格式中.其他三个选项是Unix的"LF",Windows的"CRLF"和Mac OS X Mac的"CR".大多数人发现"本土"能够发挥出最佳效果.Native的唯一问题是它不会检查具有混合行结尾的文件,而"LF"和"CRLF"将会.
一旦你这样做,你应该得到一个预提交钩子,允许你在特定文件上强制行结束.然后,教你的开发人员使用autoproperties.预提交挂钩将阻止任何提交,除非将属性放在文件上开发人员将其提交拒绝一次或两次,并且他们将自己设置自动属性.