我们的git repo中有一个特定的源文件(java),这会导致我们出现行尾问题。
我们的开发人员都运行Windows,而构建服务器运行Linux。该文件是在过去某个时间使用CRLF签入的。我们最近在构建过程中引入了Spotless和google-java-format来强制执行代码样式,并且在构建服务器上运行时失败。
为了解决这个问题,我在Windows框上将行尾转换为LF并提交了文件。现在,这在我们的构建服务器上可以很好地运行,但是现在每次我们在Windows上检出文件时,它都会以LF行结尾检出,并且使Spotless检查失败。
我core.autocrlf=true
在git config上(已通过验证git config --list
)。我签出的同一存储库中的所有其他文件在Windows上均以CRLF格式出现,并在存储库中正确转换回LF。只是一个文件引起了问题。这影响了我们的整个团队。
我试图再次删除并检出文件,甚至删除我的本地存储库并从头开始克隆遥控器-在Windows上,一个文件总是以LF格式出现。我已经尝试了.gitattributes之类的各种设置*.java text eol=lf
并正在运行,git add --renormalize
但是此文件的问题仍然存在。为什么这个特定文件有此问题以及如何解决它的任何想法?
事实证明,源文件具有一些FIX消息,包括String文字,包括SOH(Unicode 0x0001)消息定界符。尽管我认为这是有效的UTF-8,但用\ u0001转义符代替它们似乎已经解决了问题。这可能是git的文本/二进制检测中的错误,这意味着它始终认为它们是二进制文件而被忽略core.autocrlf
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句