質問

私は、しばらくの間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

おそらく失敗する可能性のあるいくつかのコーナーケースがまだあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top