gpt4 book ai didi

git - .gitattributes 使用 '* text=auto' 和过滤器

转载 作者:太空狗 更新时间:2023-10-29 14:03:34 27 4
gpt4 key购买 nike

在跨平台项目中,为所有文本文件 '* text=auto' 以及 'smudge 配置 CRLF 规范化 的正确方法是什么' 和 'clean' 过滤器 某些文件 '*.h filter=myfilter'?

例子:

# my .gitattributes
* text=auto # in case people don't have core.autocrlf set
*.h filter=myfilter # filter for header files

添加 *.h filter=myfilter 后,我收到如下警告:

warning: LF will be replaced by CRLF in foo.h.
The file will have its original line endings in your working directory.

如果我删除 *.h filter=myfilter,警告就会消失。为什么?此行是否禁用了 *.h 文件的 CRLF 规范化

更新

关于警告,过滤器使用 sed 替换文件头注释中的标签。当在 Windows 上运行时,sed 正在将 CRLF 转换为 LF。这就是警告的来源。解决方案是以二进制模式运行 sed (--binary)。

最佳答案

一些实验会产生相当困惑的结果。

The gitattributes documentation提前说:

When more than one pattern matches the path, a later line overrides an earlier line. This overriding is done per attribute.

(强调我的)这清楚地表明,虽然 *.h filter=myfilter覆盖 filter 的任何早期匹配项设置,它应该不会影响任何更早的 * text=...设置。

实际的 checkin 和 checkout 过程似乎表现良好:较早的* text=<whatever>被服从。

然而,其他命令似乎处理 filter作为覆盖 text . (这似乎是警告的来源。)

在这种情况下,您可以通过以下方式解决问题:

*.h text=auto filter=myfilter

但总的来说,这似乎违反了记录在案的行为。

关于git - .gitattributes 使用 '* text=auto' 和过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com