ここまでで、玄箱CVSサーバの準備ができました。 最初は、玄箱のコマンドラインからCVSを使ってみます。 以下の作業は、 TELNETで玄箱にLOGINしてから 行います。
CVSクライアントは、使用すべきリポジトリを明示して使用します。
リポジトリの位置は、CVS
のコマンドで指定することも
可能なのですが、いちいちコマンドラインで指定するのも面倒です。
この手間を省くためには、CVSROOT
という環境変数に
リポジトリの位置を指定します。
noritan@NORITAN-BOX:~$ echo $SHELL /bin/bash noritan@NORITAN-BOX:~$ CVSROOT=/mnt/cvs/rep noritan@NORITAN-BOX:~$ export CVSROOT
ここで例として使用しているコマンドシェルは、bin/bash
です。
他のシェルの場合には、書き方が違うので注意してください。
次に、リポジトリに登録すべきファイルを準備します。
noritan@NORITAN-BOX:~$ mkdir cvs-test noritan@NORITAN-BOX:~$ cd cvs-test noritan@NORITAN-BOX:~/cvs-test$ echo TEST > test.txt
CVSでは、登録するファイルを入れたディレクトリの単位を
モジュールと呼んでいます。
この例では、中にtest.txt
というファイルを一つだけ入れた
cvs-test
というモジュールを作成します。
出来上がったモジュールをリポジトリに登録します。
登録には、import
サブコマンドを使用します。
noritan@NORITAN-BOX:~/cvs-test$ cvs import -d -m "start point" cvs-test noritan REV0 N cvs-test/test.txt No conflicts created by this import
cvs
コマンドにimport
サブコマンドをつけて
呼び出します。
リポジトリに新たにモジュールを追加するのが、
import
サブコマンドの役割です。
cvs
コマンドには、多くのサブコマンドとオプションがあります。
サブコマンドの一覧は、
--help-commands
オプションで表示されます。
オプションの一覧は、
--help
オプションにサブコマンドを続けると表示されます。
noritan@NORITAN-BOX:~/cvs-test$ cvs --help import Usage: cvs import [-d] [-k subst] [-I ign] [-m msg] [-b branch] [-W spec] repository vendor-tag release-tags... -d Use the file's modification time as the time of import. -k sub Set default RCS keyword substitution mode. -I ign More files to ignore (! to reset). -b bra Vendor branch id. -m msg Log message. -W spec Wrappers specification line. (Specify the --help global option for a list of other help options) noritan@NORITAN-BOX:~/cvs-test$
モジュールが登録されたかどうかは、リポジトリを見ると確認できます。
noritan@NORITAN-BOX:~/cvs-test$ ls -al /mnt/cvs/rep/cvs-test total 12 drwxrwxr-x 2 noritan users 4096 Oct 30 22:36 . drwxrwxr-x 9 cvs users 4096 Oct 30 22:36 .. -r--r--r-- 1 noritan users 387 Oct 30 22:36 test.txt,v
ここでは、モジュールを確認するためにリポジトリのディレクトリを見ました。 ところが、通常のCVSサーバは、ネットワークの向こうに存在するため、 リポジトリのディレクトリなど見ることはできません。
たぶん、他に方法があるのだと考えてはいますが、 いまだ、発見できずにいます。
CVSを使う場合、ワークスペースという自分専用の作業場所を作成します。 さきほど、モジュールを作成したときに使ったディレクトリを そのまま使ってもかまいません。 しかし、万が一を考えて、さきほどとは別のディレクトリを作成します。
noritan@NORITAN-BOX:~$ mkdir ~/workspace/ noritan@NORITAN-BOX:~$ cd ~/workspace
ホームディレクトリにworkspace
というディレクトリを
作成して、移動します。
noritan@NORITAN-BOX:~/workspace$ cvs checkout cvs-test cvs checkout: Updating cvs-test U cvs-test/test.txt
この作業場所でcheckout
サブコマンドを使って、
cvs-test
モジュールを使う作業場所ができます。
noritan@NORITAN-BOX:~/workspace$ cd cvs-test noritan@NORITAN-BOX:~/workspace/cvs-test$ ls -al total 16 drwxr-xr-x 3 noritan users 4096 Oct 31 21:13 . drwxr-xr-x 3 noritan users 4096 Oct 31 21:13 .. drwxr-xr-x 2 noritan users 4096 Oct 31 21:13 CVS -rw-r--r-- 1 noritan users 5 Oct 30 22:32 test.txt
中には、cvs-test
モジュールで作成したtest.txt
という
ファイルが存在しています。
上の例でわかるように作った覚えの無いCVS
というディレクトリが
できています。
このディレクトリには、このモジュールの素性を知らせる情報が入っていますので、
削除したり変更したりしないでください。
CVSディレクトリの無いモジュールが欲しい場合には、
checkout
サブコマンドの変わりにexport
コマンドを
使用します。
作業場所に持ってきたファイルは、更新することができます。 ここでは、ファイルの末尾に"UPDATED"の一行を追加します。
noritan@NORITAN-BOX:~/workspace/cvs-test$ cat test.txt TEST noritan@NORITAN-BOX:~/workspace/cvs-test$ echo "UPDATED" >> test.txt noritan@NORITAN-BOX:~/workspace/cvs-test$ cat test.txt TEST UPDATED
更新したファイルを新しいバージョンとしてリポジトリに登録します。
この時に使用するサブコマンドは、commit
です。
noritan@NORITAN-BOX:~/workspace/cvs-test$ cvs commit -m "updated file" test.txt Checking in test.txt; /mnt/cvs/rep/cvs-test/test.txt,v <-- test.txt new revision: 1.2; previous revision: 1.1 done
これで、test.txt
ファイルは、バージョン1.1からバージョン1.2に
更新されました。
リポジトリも変更されています。
noritan@NORITAN-BOX:~/workspace/cvs-test$ ls -al /mnt/cvs/rep/cvs-test total 12 drwxrwxr-x 2 noritan users 4096 Oct 31 21:28 . drwxrwxr-x 9 cvs users 4096 Oct 30 22:36 .. -r--r--r-- 1 noritan users 463 Oct 31 21:28 test.txt,v
先ほどのファイルは、バージョン1.2になったのですが、 これだけではファイル自身を見てバージョンが判別できるわけでは ありません。
noritan@NORITAN-BOX:~/workspace/cvs-test$ cat test.txt TEST UPDATED
CVSでは、ファイルのバージョンを識別できる印を自動的に挿入することができる
RCSキーワードという仕組みを持っています。
RSCキーワードには、さまざまな種類がありますが、
ここでは、キーワード$Id$
について試してみます。
noritan@NORITAN-BOX:~/workspace/cvs-test$ echo '$Id$' >> test.txt noritan@NORITAN-BOX:~/workspace/cvs-test$ cat test.txt TEST UPDATED $Id$
ファイルの末尾に$Id$
という行を加えます。
noritan@NORITAN-BOX:~/workspace/cvs-test$ cvs commit -m "Added Id" test.txt Checking in test.txt; /mnt/cvs/rep/cvs-test/test.txt,v <-- test.txt new revision: 1.3; previous revision: 1.2 done
このファイルをcommit
サブコマンドでリポジトリに登録します。
noritan@NORITAN-BOX:~/workspace/cvs-test$ cat test.txt TEST UPDATED $Id: test.txt,v 1.3 2006/10/31 12:36:18 noritan Exp $
すると、$Id$
キーワードがファイルの素性をあらわす
文字列に置き換えられます。
これで、ファイルを見ただけで、ファイルのバージョンを識別することが
できるようになりました。
上の例のようにRCSキーワードは自動的に置き換えられてしまいますので、 置き換えられたことによって文法的に問題が発生するような箇所に キーワードを配置することはできません。
そのため、キーワードは、プログラムのコメント中に置いたり、 文字列中に置いたりすることが多いようです。 プログラムのコメントに置いた場合には、 コンパイルした後のファイルにはキーワードは残りませんが、 文字列中に置いた場合には、コンパイル後も実行ファイルに キーワードが残ります。
ワークスペースは、何も考えずに削除してしまってかまわないのですが、
cvs
コマンドを使って削除することもできます。
noritan@NORITAN-BOX:~/workspace/cvs-test$ cd ../ noritan@NORITAN-BOX:~/workspace$ cvs release -d cvs-test You have [0] altered files in this repository. Are you sure you want to release (and delete) directory `cvs-test': y
ワークスペースの削除には、-d
オプションを付けた
release
サブコマンドを使用します。
「本当に削除しても良いか」とプロンプトがでてきますので、
y
を入力して承認します。
Updated: $Date: 2006/11/06 12:46:35 $
Copyright (C) 2006 noritan.org ■