web-dev-qa-db-ja.com

Android Studio-CRLF vs LF Gitベースのマルチプラットフォームプロジェクトの場合

私は複数の開発者が関与するAndroidプロジェクトに取り組んでおり、その一部はWindowsを使用しており、その他はLinux/MacOSを使用しています。Windowsを使用しているため、Gitを次のように構成するように指示されました。問題を回避するには:

autocrlf = true
safecrlf = true

これはほとんど問題なく動作します。 Android StudioはCRLFにあり、リポジトリにプッシュするとLFに変換され、その後に戻る)で作成した.Java/XML/etcファイルローカルコピーに変更をプルするとCRLFが発生します。問題は、ベクタードローアブルアセットなどの一部のタイプのファイルが、何らかの理由でLF)で生成されることです。したがって、それらをに追加しようとするとGit、「不可逆変換」エラーが発生します:

enter image description heresafecrlf = warnを設定できることはわかっていますが、私が理解していることから、Gitがバイナリファイルをテキストファイルと間違えると、バイナリファイルが破損するリスクがあるため、より安全な解決策を探しています。今のところ、ベクターアセットをGitに追加する前に手動でCRLFに編集しています。これにより、上記のエラーメッセージは回避されますが、ファイルごとにプロセスを繰り返す必要があります。 Android StudioにCRLFですべてのローカルファイルを生成させる方法はありますか?

10
PM4

私はnotset core.autocrlf to true(アドバイス 2010年以降 ):falseのままにします。

管理したいファイル .gitattributes file 、特に Git 2.10以降リリースノート を参照してください

echo "*.Java text=auto eol=crlf" >.gitattributes

組み合わせは、行うことと同等になるように修正されました

$ git config core.autocrlf true

.gitattributesallリポジトリファイルに盲目的に適用する代わりに、そのeol変換を必要なファイルの正確なセットに制限できます。
詳細については、「 チェックアウトおよびチェックイン "」を参照してください。

そして Git 2.16 +を使用git add --renormalize .は、関連するすべてのファイルをeolに変換できます。

6
VonC

LFまたはCRLFfor Android Studioファイルの設定方法を検索している私のような人は、IDEの右下隅でこの設定を変更できます。 「CRLF」をクリックして別のオプションを選択しますが、すべてのファイルだけでなく、プロジェクト全体でこれを行う方法がわかりません。

enter image description here

4
CoolMind

Android Studioで、設定、メニュー-ファイル/設定/エディター/コードスタイルに移動します。ここで、デフォルトの行区切り文字を選択できます。

4
Dmitry