2002/02/07
CVSとVSSの話2
続きです。
その証拠としてこの二つの仕組みの決定的な違いである、更新タイミングを考えましょう。CVSのタイミングはフリーであり、自分がソースコードをいじっている間にも他人が同じソースコードをいじることができます。自分がソースコードをいじっている間にサーバ上のソースコードが変わることもあります。そして、その変更を自分のソースコードに反映させるのは、登録する直前です。オープンソースプロジェクトは(御幣があるかも知れないが)とにかくスピード命の世界であり、一人がプログラムをいじっている間に他人がいじれないなどということでは困ります。そこで多数の人間が同じタイミングで同じソースをいじくりまわしそれをサーバに入れるというCVSが誕生しました。VSSのタイミングはCVSに比べてはるかにシビアであり、自分がソースコードをいじっている間は他人が同じソースコードに手を入れることはできません。ですから、自分がソースコードをいじっている間にサーバ上のソースコードが変わることもありません。クローズソースプロジェクトの世界ではスピードはさほど重要視されず、それよりもコードのバージョン管理のほうが重要なのです。この2つには一長一短があり、例えばCVSの場合は自動マージによってプログラムに思わぬ変更が加わってしまい、動作しないものになってしまう危険性を持ちますが(もっとも登録前にリコンパイルすればわかるのだが)、誰かがソースをいじっている間にも他の人が同じソースの別の場所をいじることができるという利点を持ちますし、同じソースにAバージョンとBバージョンを作るというようなコードの分岐も簡単に行えます。逆にVSSの場合は、誰かがソースをいじっている間は他の人は同じソースをいじることができませんし、コードの分岐が難しいという欠点を持ちますが、マージによる不整合は発生しません。
どちらがよいかはそのプロジェクトによって異なります。個人的には商品開発はVSSに、個人的なプログラム開発にはCVSに、それぞれ軍配があがると思います。
注記:CVSは厳密には履歴管理ソフトではない


 

Topへ