这可能听起来像一个多余的问题(很可能是一个冗长的问题),但我找不到答案.情况如下:
我的应用程序正在创建将CR作为行结尾的文本文件.更具体地说,我没有明确地将行结尾设置为CR,它恰好是我用来获取文本正文的命令的输出.当然我可以手动将CR转换为LF,但我不想,如果我可以避免它.
Git将这些文件视为一行(例如在差异期间).我已经通过这个测试库确定了行结尾的原因:https://github.com/jfletcher4d/diff-test
我实际上并不关心文件系统中的行结尾.它并不重要,至少现在还没有(我可能最终会关心我是否需要导入这些文件,现在它只是导出).但我不希望转换的CR的劳动力调查在我的应用程序,如果我能避免它,因为性能原因,以及肛门retentativeness原因:) IE这不是如何创建文本文件的问题,而是如何强制repo中的每个文本文件只有LF.
可以将git配置为将所有行结尾更改为LF,即使文件是使用CR提交的吗?
我在Windows上,使用TortoiseGit和msysgit(以及一些TortoiseSVN)可以互换,而我学习git,如果这很重要的话.
Jos*_*Lee 11
Git似乎不支持CR行结尾,所以我会编写一个过滤器来转换换行符.工作树中的文件将具有CR行结尾,并且在索引时它们将透明地转换为LF.过滤器有两部分:"clean"检查文件,"smudge"检查文件.
用于.git/config:
[filter "cr"]
clean = tr '\\r' '\\n'
smudge = tr '\\n' '\\r'
Run Code Online (Sandbox Code Playgroud)
并且.git/info/attributes(或者.gitattributes如果它应该被版本化)
* filter=cr
Run Code Online (Sandbox Code Playgroud)
请注意,这会自动git-diff使用,因为它将使用"干净"版本.
只需记住将模式设置为您需要的文件,否则二进制文件将被破坏,所有文本文件将以CR行结尾签出.
另请注意,如果未配置过滤器,则它将无提示失败,因此在设置存储库的新副本时添加配置行.
| 归档时间: |
|
| 查看次数: |
3204 次 |
| 最近记录: |