git CRLF和编码

时间:2010-02-24 17:42:15

标签: git newline

我正在与这个工具作斗争并且失去作用。我希望我的项目适用于每个文本文件,每个开发人员都是UTF-8和CRLF。 1)如何为此配置git? 2)如何与所有开发人员共享此git设置,以便没有人可以忘记配置?

我读了一些关于core.autocrlf和safecrlf的内容,但我不知道它与我的问题有什么关系。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

您可以编写一个pre-commit hook来检查是否存在CRLF,每个人(特别是集成商)都会放入他们的.git/hooks/目录中。例如,检查! grep -qPrI '[^\r]$' .树(如果你的grep支持-P)(警告:我没有真的测试该表达式)。出于同样的原因,您还可以编写一个钩子来检查所有文件是否都是有效的UTF-8。

那就是说,我认为core.autocrlf(见git-config)听起来更像是你的CRLF问题的解决方案;这样,存储库中的所有文件都将具有LF,并且拥有生成CRLF的工具的任何人都不会搞砸事情。在编码方面,避免使用非ASCII,或者如果不可能,请确保每个人的工具都配置为UTF-8。

规则检查最重要的一点(比如行结尾和编码)是集成商(也就是每个人都克隆的那个)。如果集成商只是拒绝合并破坏行结尾等的提交,那么大多数中断都可以避免(尽管贡献者仍然需要设置他们的工具)。

  

如何与所有开发人员共享此git设置,以便没有人可以忘记配置?

您可以分发.git/config~/.gitconfig(或其中的相关条目)。我认为不可能通过git clone自动分发设置。