是否可以在.gitattributes中更改EOL设置而无需规范化所有文件?

时间:2018-06-04 11:11:29

标签: git gitattributes

我有一个存储库,有CRLF和LF的混合。使用新的拉取请求,会产生新的EOL更改,这很烦人。有没有办法以下列方式设置.gitattributes:

  1. 当您签入某些内容(写入对象数据库)时,它将被标准化(到LF)。
  2. 您不必更改整个存储库中的所有EOL,这会产生大量不必要的更改,从而加剧了指责等。

1 个答案:

答案 0 :(得分:0)

有,但是中等痛苦:将您修改的每个文件(一次一个)添加到.gitattributes,以将其(通过路径名)指定为文本。也就是说,你开始使用.gitattributes阅读:

* binary

然后,只要您(或任何人)处理名为dir/sub/phile.ext的某个文件,您也可以编辑.gitattributes来阅读:

* binary
dir/sub/file.ext text

以便具有一个特定名称的文件将从那时开始规范化其所有行结尾。

当你编辑了3000个文件中的1352个时,你的.gitattributes将包含1353行:文件为1352,前面加* binary。在某些时候(3000个文件中大约1500个),反转列表会变得更容易:列出的每个文件都被视为文本,前面有* text行。从那时起,每次编辑文件时,.gitattributes删除。当你编辑了3000个文件中的2999个时,.gitattributes将只有两行:

* text
path/to/never-edited.zog binary

请注意,您可以将一个大型.gitattributes文件拆分为较小的文件,每个子目录一个:如果此时已编辑dir/sub中的每个文件,则可以将它们排除在顶层之外例如,.gitattributesdir/sub/.gitattributes将其所有文件列为* text

关键是某些属性的最后一个匹配行适用于该文件,并且首先从顶层读取.gitattribute个文件,直到最具体的子文件-directory last,所以顶级.gitattributes行会被dir/.gitattributes行覆盖,而dir/sub/.gitattributes行覆盖dir/sub行时会被<cfquery name="MyQuery" datasource="testdb"> select resp from t_tes x where service=upper('B76Z7') and rownum <=1 and resp Like ('%OK%') </cfquery> <cfif MyQuery.RecordCount eq 0> NO MATCH <cfelse> INFORMATION AVAILABLE </cfif> 行覆盖。