Mac OS 10.5.6 | ターミナル 2.0.1 | Subversion 1.5.5 |
1.Subversion によるテキスト/非テキスト管理
Subversion ではリポジトリに格納するファイルについてテキストファイルか非テキストファイルかといった扱いをします。これは、 Subversion がテキストファイルであれば行単位の差分比較やマージの機能を提供するためで、逆にバイナリであればこの様な機能の提供は不要であるという判断もしています。
このテキストか非テキストかの判断は add コマンドでリポジトリ管理対象のファイルを追加する際に自動で行われます。ただし以下の出力の様に、実際はテキストファイルでも非テキストファイル(bin)と判断されてしまうケースがあります。リポジトリに格納する上では特に問題はありませんが、差分確認やマージしたりする場合は不都合が起こります。
A (bin) sample.txt
ここでは、addコマンド 実行時に追加されるプロパティを調整することで、非テキスト(bin)と認識されたテキストファイルをテキストファイルとして認識させてやる方法を紹介します。 add コマンドについては、 svn 新規リソース追加 - コミット に記事を掲載していますので参考にしてみてください。
2.テキスト/非テキストの判断基準
Subversion ではリポジトリ下のファイルがテキストか非テキストかを svn:mime-type属性 で判断しています。 svn:mime-type属性が設定されていないか"test/" で始まる値が設定されていればテキスト、それ以外だと非テキストとして扱われます。
前項で追加した sample.txt の svn:mime-type属性 にどのような値が設定されているかは svnコマンド の proplistサブコマンド で確認できます。 --verbose が標準で出力される属性名に加えて属性値も表示させるためのオプションになります。それに続けて確認したいファイルのパスを指定します。
Properties on 'sample.txt':
svn:mime-type : application/octet-stream
この場合、sample.txt というファイルの svn:mime-type に "application/octet-stream" が設定されていることがわかります。この設定を削除するか、テキスト系の MIME-TYPE に変更してやることで、今後 sample.txt はテキストファイルとして扱われるようになります。
3.mime-type削除で非テキストファイルをテキストファイルと認識させる
いよいよ本題になります。svn:mime-type を変更することでテキストファイルと認識させることはできますが、テキスト系の MIME-TYPE にもいろいろな種類があるので、今回は svn:mime-type属性 を削除することでテキストと認識させることにしました。
svn:mime-type 属性の削除は、 svn コマンドの propdel サブ コマンド で行うことができます。 以下のように、削除したい属性(svn:mimetype)と対象ファイルのパスを指定して実行します。
property 'svn:mime-type' deleted from 'sample.txt'.
コマンドの出力から svn:mime-type 属性が削除されたことが確認できす。
以上で 非テキストと認識されていたファイルをテキストと認識させてやることができました。
参考文献
-
-Subversion によるバージョン管理- 属性 第7章 より進んだ話題-masken- 保存時に .graffle をディレクトリにしないようにする
Subversion によるバージョン管理について書かれたドキュメントの和訳OmniGraflleに関する話題が掲載されているサイト
SVN(ソース管理) |
SVNの構造概念 |
SVNセットアップ(Linux) |
SVNダウンロード |
SVN Source転送 |
SVNインストール |
Subversion 設定 |
リポジトリをApacheで公開 |
Subversion |
バックアップ・リストア |
Subversion使い方 |
リポジトリ新規作成 |
チェックアウト |
新規リソース追加(commit) |
リポジトリ参照先変更(relocate) |
テキスト指定(svn:mime-type) |
TortoiseSVN使い方 |
リポジトリ新規作成 |
参照先リポジトリの変更 |
チェックアウト |
新規リソース追加(commit) |
特定ファイルを管理下から除外(svn:ignore) |
紛失ファイルをSVN管理下から削除 |
Subversive |
既存リポジトリにプロジェクト追加 |
Subclipse |
リポジトリ設定 |
プロジェクト共有 |
SVN操作関連(mac) |
.svnディレクトリの再帰削除 |
サポート |
info@profaim.jp |
PR |
検索 |