月曜日, 8月 28, 2006

版管理システムの管理ディレクトリは邪魔?

版管理システムでは、ローカルコピーの各ディレクトリに
管理用のディレクトリ(やファイル)が作られる。
でも、普段は気にしない。存在することは知っていても意識して無視する。
参考。

Subversion使うとローカルコピーの各ディレクトリに
.svn というディレクトリが作られて、そこに管理情報が入ってる。

同じように、CVS使うと各ディレクトリに CVS というディレクトリが作られる。

ついでに、VSSのときは‥なんだっけ。名前忘れたけど、
各ディレクトリに1個特別なファイルが作られる。
でも、ときどき気になることがある。

アーカイブするとき邪魔だから管理ディレクトリを全部削除
しておきたいと思ったときとか。
findで探して管理ディレクトリだけ削除するのは簡単だけどね。
そういうのは make distclean に入れておくと便利。

別な‥すごい発想もあるみたい。
[FsFilter] Subversion のためのファイルシステムフィルタ
というのを見つけた。.svn というディレクトリをCのライブラリレベルで
見えなくするというツール‥そこまでやるとは。
何か、あれだね、クラッカー用のツールみたいだねw

私はリリース時に管理ディレクトリ探して消去する命令を
make distclean に入れておくくらいしかしません。

distclean: clean
rm -rf `find . -name CVS`

あと、grepで邪魔になったら、もひとつgrepかませてフィルタ。

grep -r foo . | grep -v CVS

でもこのフィルタだと大雑把で不正確だし、
ファイル名出さないときは使えないし、
毎回やるの面倒だから、
FsFilterみたいなのがほしくなるんでしょうねえ‥。
で、思ったんだけど。

なんでコピーの各ディレクトリに混ざって置かないといけないんだろ?
例えば、ローカルコピーのディレクトリのトップと同じ階層に
独立して管理ディレクトリ置けばいいじゃん??
そうすれば混ざらなくていいのに。

でも思ったんだけど。独立させると、ディレクトリの深いところに入って
作業してるとき、すぐそのディレクトリに管理ディレクトリがないから、
たとえば上のディレクトリをたどって管理ディレクトリを発見するまで
探索するとか、そうでなければ環境変数とかで管理ディレクトリを置く
ところを決めておかないといけない。

それがいやだから各ディレクトリに管理ディレクトリを置くことに
してるのかなぁ‥。
つまり、ローカルコピーの独立性を重視。

ほんとうはどういう理由なんでしょうね。調べないとわかりません。
まぁどう設計してもいいところとわるいところは出るものだし。

0 件のコメント: