2002/02/06
CVSとVSSの話1
プロジェクトの履歴管理として代表的なのは、CVSとVSSでしょう。CVSはGNUであり、VSSはマイクロソフトの商品です。この二つは、どちらも似たような機能を持っているのですがその思想にまったく逆のものがあります。
CVSの場合、あるソースコードのオリジナルはユーザが保持しているという発想を持っています。よって、CVSサーバにあるのは、ユーザのソースコードのコピーの集合体に過ぎません。同じソースコードを(特殊な設定をしない限り)誰でも同時にいじることができます。一方、VSSの場合、あるソースコードのオリジナルはCVSサーバにあるという発想を持っています。よって、ユーザが保持しているのは、サーバからのコピーに過ぎません。ですから(特殊な設定をしない限り)ソースコードは一人のユーザしか、いじれません。ちょっと抽象的すぎるので、もう少し具体的に説明します。CVSの場合、コードに手を入れる場合は自分のマシン上のコードに直接手を入れます。修正が終わったら、最後に自分がCVSサーバから取得した以降の変更点をサーバからもらって自分のソースコードにマージします。この時点で、自分のローカルのソースコードは最新のソースコードとなるわけです。こうしてできたコードをCVSサーバに登録します。一方、VSSの場合、コードに手を入れる場合は、まず先にVSSサーバから最新のソースコードをもらいます。これをチェックアウトと言い、チェックアウトされているソースコードを他人がいじることはできません。こちらの場合は最新のソースコードに修正を加えたら、修正を加えたソースコードをサーバに登録(チェックイン)します。この二つにこのような違いができた理由について考えてみましょう。私はこの二つの違いは誕生した背景にある文化の違いのせいではないかと思います。CVSはオープンソースプロジェクトの文化から誕生しました。一方、VSSはWindows開発環境という、クローズソースプロジェクトから誕生しました。
続きます。


 

Topへ