SVN 操作中にすべての行末を CRLF、LF、または CR に変換するにはどうすればよいですか
-
08-06-2019 - |
質問
これで、大規模な SVN Commit を実行する準備が整いましたが、一部のファイルで行末が一貫していないため、コミットが失敗します。面白いのは、さまざまな深さの数十のフォルダーにまたがる数千のファイルを見ていることです。
職業はなんですか?
解決
私はそうは思わない 事前コミット フックは実際にコミットされているデータを変更することができます。コミットを禁止することはできますが、変換を行うことはできないと思います。
が欲しいようですね 財産 'svn:eol-style' を 'native' に設定 - これにより、改行がプラットフォームで使用されているものに自動的に変換されます (OS の要求に関係なく、改行を取得するには 'CRLF'、'CR'、または 'LF' を使用します)。
使用できます 自動プロパティ これにより、今後作成するすべてのファイルにこのプロパティが設定されるようになります (自動プロパティはクライアント側で処理されるため、これをユーザーごとに設定する必要があります)。
他のヒント
まずはすべてをきれいにすることです。Windows または Unix/Linux/Mac を使用していますか?
Unix/Linux/Mac を使用している場合は、次のようなことを試すことができます。
$ find . -type f -name "*.java" -exec dos2unix {}\;
それはあなたが持っている場合です dos2unix
あなたの箱に。私の Mac にも、私たちが持っている 6 台の Linux マシンにもありません。この特定のパッケージをインストールしていないようです。幸いなことに、見つけるのは簡単です。
バイナリ ファイルを書き換えたくないので、使用する場合は注意してください。
すべてをクリーンアップしたら、 svn:eol-style
ファイルのプロパティ。に設定する ネイティブ は、マシンに適した行末をもつファイルをチェックアウトしますが、ファイルは Unix 行末形式で保存されます。他の 3 つのオプションは、Unix の場合は「LF」、Windows の場合は「CRLF」、Mac OS X 以前の Mac の場合は「CR」です。ほとんどの人は「ネイティブ」が最適だと考えています。ネイティブの唯一の問題は、行末が混在しているファイルはチェックインされないのに対し、「LF」と「CRLF」はチェックインされることです。
それを行うと、 プリコミットフック これにより、特定のファイルに行末を強制することができます。次に、開発者に使い方を教えます。 自動プロパティ. 。コミット前フックは、プロパティがファイルに配置されていない限り、コミットを防ぎます。開発者は、コミットが 1 回か 2 回拒否されると、自分で自動プロパティを設定します。
追加 プリコミットフック これはファイルの内容を解析し、SVN に書き込まれる前に CRLF/LF/CR/etc の書き換えを実行します。
Linux のようなコマンドを使用することを検討してください。 dos2unix 変換のために。Linuxコマンドなのでスクリプトなどでバッチモードで使うのが簡単です。他のオペレーティング システムに同等のものがあるかどうかはわかりません。