環境
- OS: Linux (Debian/sarge)
- Kernel: linux-2.6.16
- subversion: 1.3.1
Subversion によるバージョン管理
svn:ignore 属性はある種のSubversion操作が無視する ファイルパターンのリストを含んでいます。多分もっともよく利用される 特殊属性で、global-ignores 実行時設定オプションと ともに利用されます。 (configの項参照)。 それを使って、バージョン化されていないファイルとディレクトリを svn status、svn add、そして svn importコマンドの対象から除外します。
ということなので、svn addをためしてみます。
add時にsvn:ignoreを設定しているファイルはaddのcommit対象から外されるのか?
% mkdir test
% touch test/normalfile
% touch test/ignorefile
% svn add test
A test
A test/normalfile
A test/ignorefile
% svn propset svn:ignore ignorefile test
property 'svn:ignore' set on 'test'
% svn status
A test
A test/ignorefile
A test/normalfile
% svn commit
Adding test/test
Adding test/test/ignorefile
Adding test/test/normalfile
svn:ignoreでignorefileを設定したつもりだったのでですが、無視されなかったようです。
結果: svn:ignoreを設定していてもaddのcommit対象から外されません
svn:ignoreを設定しているファイルを修正したときcommit対象から外されるのか?
上記のつづき
% svn proplist -v test
Properties on 'test':
svn:ignore : ignorefile
% echo foobar >>test/normalfile
% echo foobar >>test/ignorefile
% svn statusIndex: test/ignorefile
M test/ignorefile
M test/normalfile
% svn diff
===================================================================
--- test/ignorefile (revision 22)
+++ test/ignorefile (working copy)
@@ -0,0 +1 @@
+foobar
Index: test/normalfile
===================================================================
--- test/normalfile (revision 22)
+++ test/normalfile (working copy)
@@ -0,0 +1 @@
+foobar
% svn commit
Sending test/test/ignorefile
Sending test/test/normalfile
commitできてしまいました。
結果: svn:ignoreを設定しているファイルを修正してもcommit対象から外されない
バージョンコントロールから外した場合のsvn statusで表示されるか?
上記のつづき
% svn delete test/ignorefile test/normalfile
D test/normalfile
D test/ignorefile
% svn status
D test/normalfile
D test/ignorefile
% svn commit
Deleting test/test/ignorefile
Deleting test/test/normalfile
% echo foobar >> test/normalfile
% echo foobar >> test/ignorefile
% svn status
? test/normalfile
% svn status --no-ignore
I test/ignorefile
? test/normalfile
期待どおり、svn:ignoreを設定しているファイルはsvn statusの対象からはずれました。
結果: svn:ignoreを設定しているとバージョンコントロールから外した場合のsvn statusで表示されない
ここまでの結果から、結論としてsvn:ignoreはバージョンコントロール対象ではないファイルのsvn statusでの表示にのみ影響をあたえるパラメタだと推測できます。