ファイルをバイナリファイルとして扱うようにSubversion(svn)に指示するにはどうすればよいですか?
以下を使用して、リポジトリ内にあるファイルをbinaryとして手動で識別することができます。
svn propset svn:mime-type application/octet-stream <filename>
Subversionはファイルが最初に追加されたときにファイルがバイナリであるかどうかを判断しようとするため、これは通常必要ありません。 Subversionがバイナリとして扱う必要がある特定のタイプを誤って「テキスト」としてタグ付けしている場合、Subversionの auto-props feature を設定して、そのファイルに非テキストMIMEタイプを自動的にタグ付けできます。ファイルに設定されているプロパティに関係なく、Subversionはリポジトリ内にバイナリ形式でファイルを保存します。
SubversionがMIMEタイプを「テキスト」タイプとして識別する場合、svn diffやsvnなどのバイナリファイルでは利用できない特定の機能を有効にします。非難。また、自動行末変換も可能です。これは、クライアントごとに構成できます。
詳細については、「 Subversionはバイナリファイルをどのように処理しますか? 」を参照してください。
Subversion book の367ページから
最も一般的な意味では、SubversionはバイナリファイルをCVSよりも優雅に処理します。 CVSはRCSを使用するため、変化するバイナリファイルの完全なコピーのみを保存できます。ただし、Subversionは、テキストデータとバイナリデータのどちらが含まれているかに関係なく、バイナリ差分アルゴリズムを使用してファイル間の相違を表現します。つまり、すべてのファイルはリポジトリに差分(圧縮)で保存されます。
CVSユーザーは、データが文字化けしないように-kbフラグを使用してバイナリファイルをマークする必要があります(キーワードの展開と行末の変換による)。彼らは時々これをするのを忘れます。
Subversionはより偏執的なルートを取ります。まず、明示的に要求しない限り、いかなる種類のキーワードまたは行末変換も実行しません(詳細については、「キーワード置換」セクションおよび「行末文字シーケンス」セクションを参照してください)。デフォルトでは、Subversionはすべてのファイルデータをリテラルバイト文字列として扱い、ファイルは常に未翻訳の状態でリポジトリに保存されます。
第二に、Subversionはファイルが「テキスト」データか「バイナリ」データかという内部概念を維持しますが、この概念は作業コピーにのみ存在します。 svnの更新中、Subversionはローカルで変更されたテキストファイルに対してコンテキストマージを実行しますが、バイナリファイルに対しては実行しようとしません。
コンテキストマージが可能かどうかを判断するために、Subversionはsvn:mime-typeプロパティを調べます。ファイルにsvn:mime-typeプロパティがない場合、またはテキスト(たとえばtext/*)のMIMEタイプがある場合、Subversionはそれがテキストであると想定します。それ以外の場合、Subversionはファイルがバイナリであると想定します。 Subversionはまた、svn importおよびsvn addコマンドでバイナリ検出アルゴリズムを実行することにより、ユーザーを支援します。これらのコマンドは適切な推測を行い、(おそらく)追加されるファイルにバイナリのsvn:mime-typeプロパティを設定します。 (Subversionが間違っていると推測した場合、ユーザーはいつでもプロパティを削除または手動で編集できます。)
手編集は
svn propset svn:mime-type some/type filename.extension
基本的に、MIMEタイプをoctet-streamに設定する必要があります。
svn propset svn:mime-type application/octet-stream <filename>
'svn add'が誤ったタイプを推測し、次のようなエラーが表示された場合:
svn: E200009: File 'qt/examples/dialogs/configdialog/images/config.png' has inconsistent newlines
svn: E135000: Inconsistent line ending style
回避策は、プロパティなしでファイルを追加し、2番目のステップでプロパティを設定することです。
svn add --no-auto-props qt/examples/dialogs/configdialog/images/config.png
svn propset svn:mime-type image/png qt/examples/dialogs/configdialog/images/config.png
例えば:
svn propset svn:mime-type image/png foo.png
Subversionは、ファイルがバイナリかどうか 自動検出 を試みますが、 svn propset を使用してmime-typeをオーバーライドできます。例えば、 svn propset svn:mime-type application/octet-stream example.txt
。これにより、ファイルはテキストファイルではなくバイトのコレクションとして機能します。 File Portability のsvnマニュアルも参照してください。
WindowsでTortoise svnを使用している場合は、ファイルを右クリックしてプロパティに移動します。 [新規]をクリックして、svn:mime-typeタイプの新しいプロパティを追加します。値を入れる場合:application/octet-stream
Subversion FAQ に従って、svn propsetを使用してsvn:mime-typeプロパティをapplication/octet-stream
svnは、MIMEタイプのプロパティを探し、存在しない場合はテキストであると推測します。このプロパティを明示的に設定できます。 http://svnbook.red-bean.com/en/1.5/svn.forcvs.binary-and-trans.html を参照してください
通常、これはデフォルトでこれを行いますが、そうでない場合は、ファイルのプロパティとpropsetを調べる必要があります。