HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

svn:ignoreで無視されるもの

なんか混乱したので、忘れないようにメモ。
当たり前と言えば当たり前すぎるのだが‥

事前準備

前提として、「/var/lib/svn」の下にリポジトリディレクトリを作成するものとする。

# cd /var/lib/svn
# sudo -u apache svnadmin create test

実験

Webサーバー経由でSVNリポジトリにアクセスする準備は整っているものとする。

$ svn --version --quiet
1.6.11
$ svn checkout http://localhost/svn/test
リビジョン 0 をチェックアウトしました。
$ cd test
$ mkdir files
$ svn add files
$ cd files
$ for f in committed committed.edited ignored.committed ignored.committed.edited
> do
>     echo a > ${f}
> done
$ svn add committed committed.edited ignored.committed ignored.committed.edited
$ svn commit -m '' . committed committed.edited ignored.committed ignored.committed.edited
追加しています              files
追加しています              files/committed
追加しています              files/committed.edited
追加しています              files/ignored.committed
追加しています              files/ignored.committed.edited
ファイルのデータを送信しています ....
リビジョン 1 をコミットしました。
$ svn propset svn:ignore 'ignored.*' .
属性 'svn:ignore' を '.' に設定しました
$ svn commit -m '' .
送信しています              files

リビジョン 2 をコミットしました。
$ for f in added ignored.added
> do
>     echo a > ${f}
> done
$ svn add added ignored.added
$ for f in notmanaged ignored.notmanaged
> do
>     echo a > ${f}
> done
$ echo b >> committed.edited
$ echo b >> ignored.committed.edited
$ cd ..
$ pwd
/home/hhelibex/tmp/test
$ ls -1 files
added
committed
committed.edited
ignored.added
ignored.committed
ignored.committed.edited
ignored.notmanaged
notmanaged
$ svn status
?       files/notmanaged
A       files/added
M       files/committed.edited
A       files/ignored.added
M       files/ignored.committed.edited
$ svn status --no-ignore
I       files/ignored.notmanaged
?       files/notmanaged
A       files/added
M       files/committed.edited
A       files/ignored.added
M       files/ignored.committed.edited
$ 

結論

svn:ignore」で無視されるのは、バージョン管理下に置かれていない(commitはもちろん、addすらされていない)ファイルに限定される。
‥当たり前だ‥
‥いや、無視するパターンをファイルに書いて、そのファイル自身もignore対象に入れて、パターン一覧を書いたファイルをバージョン管理するっていう矛盾したサンプル(何)を見つけて混乱したので‥