针对一个非常庞大的代码仓库,其中存在一些不一致的换行符和文件编码格式(ascii和UTF-8带BOM头部)。
最主要的问题在于当前的文件集合非常不一致。它们的编码格式各不相同(暂时先忽略UTF-16,尽管也有一些这种类型的文件)。它们的换行符从一个文件到另一个文件不同,在同一个文件内部也不同,尽管我怀疑大多数文件都是以crlf换行符存储在git中。
其中存在两个主要问题:
1)使用相同代码仓库的不同人员查看变更时,会看到不同的变更结果。有时会发现“整个文件”都发生了变化,原因是由于标准化的换行符造成的。有时只是文件的一部分发生了变化。这似乎主要取决于core.autocrlf是否设置为true或false,并且还受到.gitattributes文件的影响。
2)我希望所有人都能向git仓库提交文件,而不必关注他们特定的git配置是否已设置为执行crlf转换,或者他们使用的文本编辑器、IDE或其他工具。虽然这种行为在Windows上可能有问题,但我们需要克服。
主要问题是:如何确保'gitk'、'git diff'、'git show'等显示的输出结果在变更方面是绝对一致的。我在这里关注的不是换行符,而是确保给定提交的“更改”是所有开发人员看到的同一个变更。我不希望一个人看到变化并说:“所有行都已更改”(即换行符已更改),而另一个人看到相同的变化却表示:“三行已更改”。
注意:有些人使用GitHub查看变更。
也就是说,我想要确信如何关注换行符,因此我最终要求知道换行符的处理方式。例如,如果我在.gitattributes中为某个文件指定“eol=crlf”,这意味着该文件是否以该设置提交到git中?如果我检出之前提交的那个文件版本,而当时还没有设置.gitattributes文件,会发生什么呢?
最主要的问题在于当前的文件集合非常不一致。它们的编码格式各不相同(暂时先忽略UTF-16,尽管也有一些这种类型的文件)。它们的换行符从一个文件到另一个文件不同,在同一个文件内部也不同,尽管我怀疑大多数文件都是以crlf换行符存储在git中。
其中存在两个主要问题:
1)使用相同代码仓库的不同人员查看变更时,会看到不同的变更结果。有时会发现“整个文件”都发生了变化,原因是由于标准化的换行符造成的。有时只是文件的一部分发生了变化。这似乎主要取决于core.autocrlf是否设置为true或false,并且还受到.gitattributes文件的影响。
2)我希望所有人都能向git仓库提交文件,而不必关注他们特定的git配置是否已设置为执行crlf转换,或者他们使用的文本编辑器、IDE或其他工具。虽然这种行为在Windows上可能有问题,但我们需要克服。
主要问题是:如何确保'gitk'、'git diff'、'git show'等显示的输出结果在变更方面是绝对一致的。我在这里关注的不是换行符,而是确保给定提交的“更改”是所有开发人员看到的同一个变更。我不希望一个人看到变化并说:“所有行都已更改”(即换行符已更改),而另一个人看到相同的变化却表示:“三行已更改”。
注意:有些人使用GitHub查看变更。
也就是说,我想要确信如何关注换行符,因此我最终要求知道换行符的处理方式。例如,如果我在.gitattributes中为某个文件指定“eol=crlf”,这意味着该文件是否以该设置提交到git中?如果我检出之前提交的那个文件版本,而当时还没有设置.gitattributes文件,会发生什么呢?