# CVS

## 1.CVSとは

CVS(Concurrent Versions System)は、ソースコードのヒステリーを管理します。また、複数のメンバーと共同で作業を行うことに適しています。ここでは、UNIX環境を中心にして、話を進めていきます。

## 2.CVSの入手

### 2.1. Free Software Foundation

公式のGNUツールとしてCVSを提供しています。

http://www.gnu.org/software/cvs/cvs.html

FTPサイト(ミラーを含む)のサブディレクトリである/non-gnu/cvsに置いております。

## 3.CVSを使用する

### 3.1.Sourceforgeの設定

ここでは、ssh Unixで設定した公開鍵と秘密鍵を用いますので、一通りsshの設定を行います。設定方法はsshの設定を参考にして下さい。

### 3.2.CVSの基本

#### 3.2.1.基本的なフロー

    initial import
    ↓
    checkout　update
    ↓　　　　↓　↑
    変更　←←　　↑
    ↓　　　　　　↑
    commit　→→　↑

CVSをもちいた基本的なフローです。 まず、プロジェクトをリポジトリにimportします。次にcheckoutを行い、作業用コピーにプロジェクトをコピーします。そして、編集や追加などの変更を行い、commitします。updateは作業用コピーをリポジトリと比較し作業用コピーを更新します。

#### 3.2.2.CVSの設定

■　sshの設定
$ export CVS_RSH=ssh

■　-dリポジトリの設定
$ CVSROOT=:ext:developername@cvs.sourceforge.jp:/cvsroot/globalbase $ export CVSROOT
-dリポジトリの入力を省略できます。

#### 3.2.3.チェックアウト

■　gbsをチェックアウトする場合
$ cvs -z3 -d:ext:developername@cvs.sourceforge.jp:/cvsroot/globalbase checkout gbs
-z GZIPLEVEL: | サーバーとの通信時の圧縮レベルです。9が高圧縮率、1が低圧縮率です。普通は3から5を用います。
-d REPOSITORY: | リポジトリを指定します。
checkout [OPTIONS] modulename: | リポジトリから作業用コピーにモジュールを取り入れます。別名：co

これ以降2.2.2.で述べたように、-dオプションはCVSROOT環境変数を設定しているものとして説明します。

#### 3.2.4.コミット

修正内容をリポジトリに送信することをコミットといいます。

■　commit
$ cvs commit -m "comment" test.c
-m : | メッセージを指定します。
ここでファイル名を省略すると、すべてのファイルに適用します。別名：ci

#### 3.2.5.update,diff

■　update
$ cvs update
リポジトリの変更内容を作業用コピーに反映させます。また、作業用コピーの修正したファイルを示します。

■　diff
$ cvs diff
作業用コピー内の修正ファイルとリポジトリ内のファイルを比較し差分を表示します。

#### 3.2.6.add,remove

■　add（ファイルの追加）
$ cvs add addfile.c
addfile.cをリポジトリに追加します。
<手順> 1)リポジトリにファイルを追加します。 2)コミットします。
$ cvs add addfile.c $ cvs commit -m "added"

■　remove（ファイルの削除）
$ cvs remove removefile.c
removefile.cをリポジトリから削除します。
<手順> 1)ディスクからファイルを削除します。 2)リポジトリから削除します。 3)コミットします。
$ rm removefile.c $ cvs remove removefile.c $ cvs commit -m "removed"

### 3.3.パスワード認証サーバ(pserver)

このプロジェクトのSourceForge CVS リポジトリは匿名(anonymous)でCVS(pserver)にアクセスし、チェックアウトすることができます。チェックアウトの手順は次のとおりです。modulenameには、チェックアウトするモジュールの名前を指定します。のパスワードプロンプトが表示されたら、ENTERキーを押してください。

$ cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/globalbase login
$ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/globalbase co modulename

モジュールのディレクトリ内からアップデートする場合、-d オプションは必要ありません。

(sourceforge.jpより抜粋)