是CRLF线确定在部署Linux上的Rails项目?
-
22-07-2019 - |
题
我有一个Git仓库(原本CVS,然后SVN,现在GIT)包含已被现在已经部署在Linux上一会儿Rails项目。一切似乎运行正常。
现在,我已经转换为混帐,我看到的我的许多存储库中的文件包含的 CRLF
行尾即可。我会为这爱都是一致的(LF
),而不是在每一个丢失已CRLF
行结束文件的编辑历史为代价的。
你能想到的任何原因,我不能离开这个文件,因为它们是吗我似乎记得有是与shell脚本或cron的文件或一些不回应CRLF
问题得非常好。
另外,我知道所有关于Git的选项core.autocrlf
和core.safecrlf
,但有一些方法有它的从CRLF
将所有文本文件LF
结账(用于Linux端) ...即core.autolf选项或类似的东西?
解决方案
如果这是确定你来重写你的资料库的历史(见的>的问题),你可以使用git过滤分支CRLF转换为LF:
git filter-branch --tree-filter 'find . -path './.git' -prune -o -type f -exec dos2unix \{} \;' HEAD
请注意,如果你在你的库二进制文件,你将不得不细化find命令将它们排除在外。
其他提示
一个评论以davitenio的答案和丹尼尔·比尔兹利的评论;我相信你可以使用这个小程序周围DOS2UNIX的包装:
#!/bin/sh
for f in $@; do
if [ $(file -b -n -i -m /dev/null $f | grep -c "text") -gt 0 ]; then
dos2unix $f
fi
done
虽然有可能还存在一些角落情况下会失败。
不隶属于 StackOverflow