LinuxにデプロイされたRailsプロジェクトでCRLF行は問題ありませんか?
-
22-07-2019 - |
質問
私は、しばらくの間LinuxにデプロイされたRailsプロジェクトを含むGitリポジトリー(元々はCVS、次にSVN、現在はGit)を持っています。すべてが正常に実行されるようです。
gitに変換したところ、リポジトリ内の多くのファイルに CRLF
行末。すべてが一貫している( LF
)が望ましいのですが、行末が CRLF
であるすべてのファイルの編集履歴が失われることはありません。
ファイルをそのままにしておくことができない理由をお考えですか?シェルスクリプトやcronファイル、または応答しないものに問題があることを覚えているようです< code> CRLF は非常に良好です。
また、Gitオプション core.autocrlf
および core.safecrlf
についてもすべて知っていますが、すべてのテキストファイルをチェックアウト時の CRLF
から LF
(Linux側の場合) ...すなわち、core.autolfオプションまたは同様のものですか?
解決
リポジトリの履歴を書き換えても問題ない場合(書き換え履歴の問題)git filter-branchを使用してCRLFをLFに変換できます:
git filter-branch --tree-filter 'find . -path './.git' -prune -o -type f -exec dos2unix \{} \;' HEAD
バイナリファイルがリポジトリにある場合は、findコマンドを絞り込んで除外する必要があることに注意してください。
他のヒント
A 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