funini.com 自由研究 Samba

CVSの使い方

CVS(Concurrent Version System)は、ファイルのバージョンを管理するシステムで、以下のような機能があります。 ここでは、sshでログインできるサーバを用いてcvsを使う方法を示します。

レポジトリの作成

CVSを利用するためには、管理するファイルを保存するレポジトリを作成する必要があります。まず、サーバにログインします。 ユーザ名をkeiとします。
 $ ssh kei@[cvsサーバのアドレス]
 kei@サーバ名:~$ cvs -d /home/kei/cvs init 
すると、~/cvsというディレクトリが作成されます。これがCVSの''レポジトリ''で、管理されるファイルはここに格納されます。

ローカルマシンの環境設定

CVSを利用するときは、たいていの場合手元のコンピューターからレポジトリにアクセスしますが、そのためにいくつかの環境変数を設定する必要があります。具体的には、手元のマシンのCygwinで、~/.bashrcや/etc/profileにいくつの項目を記述します。(以下、bashについて書くので、tcshを使っている方は適宜読み替えて下さい)

環境変数について

環境変数は、シェルで定義されている変数で、echoコマンドで見ることが出来ます。 例えば、ターミナルで以下のように打つと、シェルの種類が表示されます。
 echo $SHELL
SHELLというのが変数の名前です。
環境変数は、起動時に読み込まれるように設定ファイルに書いておきます。 色々な変数を登録することで、コマンドを実行するときに設定を一々書かなくてもよくなります。

Cygwinでの環境変数の登録

Cygwinでは、起動時に読み込まれるファイルが各自の設定によって異なります。一番確実なのは、c:\cygwin\etc\profileを編集し、設定を書き加えることです。ソフトはMeadow, Wordpadほか、各自好みのエディタを用いましょう。
書き加える内容は、
 CVS_RSH=ssh 
 CVSROOT=:ext:kei@cvsサーバのアドレス:/home/kei/cvs
 export CVS_RSH CVSROOT
です。

Linuxでの環境変数の登録

Linuxでは、~/.bashrc (~は各自のホーム、例えば/home/kei) に、以下のように書きます。
export 変数名=値
今回のCVSの場合は、以下のように書きます。
export CVS_RSH=ssh 
export CVSROOT=:ext:kei@サーバのアドレス:/home/kei/cvs

環境変数 CVS_RSH

通常、CVSでのファイル転送時にはSSHで暗号化します。そのための設定を環境変数CVS_RSHに設定します。
 export CVS_RSH=ssh 

環境変数 CVSROOT

次に、リポジトリの場所をCVSROOTに設定します。
export CVSROOT=:ext:kei@サーバのアドレス:/home/kei/cvs
keiは各自のログイン名に読み替えて下さい。 これで準備完了です。

新しいモジュール(プロジェクト)の登録

CVSでは、ソースコードをモジュール単位で管理します。ここではプログラム一つにつき一モジュール、と考えてもらっても大丈夫です。
試しに、簡単なプロジェクトを作ってみましょう。''手元の''コンピューターの適当な場所(Cygwinのホームがわかりやすいと思います)にtestというフォルダを作り、中にhello.txtというファイルを作ります。lsコマンドで、中にファイルhello.txtがあることを確認して下さい。
では登録です。モジュールの登録にはimportというCVSコマンドを用います。
まず、登録したいディレクトリ(test)に入ってください。
$ cd test
ここで、以下のようなコマンドを打ちます。
$ cvs import -m "" test-project kei init
cvsのコマンドは、
 cvs コマンド -m"コメント" 引数1 引数2 引数3...
という書式を持ちます。ここでは、cvsのimportというコマンドを実行していて、それは三つの引数を持っています。初めのtest-projectはモジュール名、keiはベンダー名(プログラムを作っている人・組織)、最後のinitはリリースタグの名前です。keiの部分は各自のアカウント名に、モジュール名も勝手に決めましょう。-mの後の文字列は、ログに記録されるコメントです。何も記録したくないときは、-m ""でもOKです。このコマンドを打つとNやIの文字とファイル名のセットで表された行が流れていくと思います。Nは新しく登録されたファイル、Iは登録されなかったファイルを表しています。もしも、不必要なファイルが登録されていたり、必要なファイルが登録されていなかったりした場合は、後で述べるように追加・削除してください。

モジュールの取得

レポジトリに登録してあるモジュールを取得するには、checkoutというCVSコマンドを用います。先ほどのディレクトリtestから出て、以下のコマンドを打ちます。
$ cd ..
$ cvs checkout test-project
今いるフォルダにtest-projectという名前のフォルダが新たに出来て、中にhello.txtとCVSというフォルダが出来ていれば成功です。モジュール名としてcheckinの時に他の名前を用いた場合は、test-projectの部分を読み替えて下さい。
checkoutの代わりに
$ cvs co <module name> 
と入力してもOKです。 これ以降は、CVSからダウンロードしたこちらのディレクトリで作業します。

モジュールの更新と反映

モジュールのファイルを変更したら、サーバのレポジトリにそれを反映(保存)します。更新内容をサーバに反映させるためには、作業ディレクトリの中で、
$ cvs commit -m "コメント" 
と打ちます。更新したファイルだけ、バージョン(1.1などの数字)が上がりレポジトリに反映される様子が出力されると思います。commitの代わりにciと打っても大丈夫です。この変更内容を他の作業ディレクトリ(たとえば、二人で作業している場合は、もう一人の作業ディレクトリ)に反映させたい場合は、作業ディレクトリの中で
$ cvs update -d 
と打ちます。Pという文字と更新されたファイルのセットの行が出力されると思います。Pはファイルの更新を表しています。新しく追加されたファイルの場合はUという文字が出力されます。
$ cvs up -d
でも同じです。

ファイルの追加と削除

新しいファイルやディレクトリを作成したら、addというコマンドで追加します。(cvs commitでは追加されません)
$ cvs add ファイル名 
これによりそのファイルがレポジトリのリストに登録され、そこで改めて
% cvs commit -m "" 
を実行することによりファイルがレポジトリにコピーされます。

ファイルを削除するときも同様です。まず、不要なファイルを削除します。
$ rm 不要ファイル名 
次にレポジトリのリストからそのファイル名を削除します。
$ cvs remove 不要ファイル名 
そして最後にそれをレポジトリに反映し、ファイルを削除します。
$ cvs commit -m "" 
removeの代わりにrmと打ってもOKです。

日付を指定してモジュールを出してくる

例えば2000年1月1日の状態に戻したい場合は
cvs update -D"2000/01/01 00:00"
とするとよいです。