個人で CVS を使うための環境設定


CVS は多くのファイルから構成されるモジュールを複数の人間で管理するのに 適したツールです。でも、そうは言っても、いまはそんな相手はいない、 という人も多いでしょう。

まずは、自分のホームディレクトリの中に データベース(レポジトリ)を置いて、CVS を使い始めましょう。

これなら、いくら失敗しても、誰にも気がねすることがありません。 好きなだけ練習をすることができます。


環境変数の設定

以下は、あなたのログインシェルが csh/tcsh であることを仮定しています。

.cshrc ファイルに、次の記述を追加してください。

setenv CVSROOT     $HOME/CVS_DB
setenv CVSEDITOR  "/usr/local/bin/mule -nw"
少なくとも CVSROOT は必ず設定する必要があります。

環境変数 CVSEDITOR に、普段使用しているエディタを記述してください。 CVSEDITOR が宣言されていない場合は環境変数 EDITOR が参照されます。 mule のオプション -nw (no window)は好みでどうぞ。

csh/tcsh を使わない人は、.bashrc などを同様に編集します。

MEMO: 今後、ファイルを更新して commit するときには、コメントをつけてください。 CVSEDITOR は、そのコメントを編集するためのエディタです。 コメントに日本語を使う場合には、その漢字コードが常に同じである 必要があります。(TODO: そのためには?)


レポジトリの作成

上述の環境設定は、 自分のホームディレクトリの下にディレクトリ CVS_DB を作り、 そこをレポジトリにする、という内容です。

その通りにレポジトリを作りましょう。

% cd
% mkdir CVS_DB
% cvs init
これでレポジトリの初期化が終わりました。


初めてのチェックアウト

ls で CVS_DB の中を見ると、CVSROOT というディレクトリがあり、 その中にたくさんファイルがあります。

% ls -a CVS_DB/CVSROOT/
.               .#loginfo       ..              config,v        loginfo         rcsinfo
.#checkoutlist  .#modules       checkoutlist    cvswrappers     loginfo,v       rcsinfo,v
.#commitinfo    .#notify        checkoutlist,v  cvswrappers,v   modules         taginfo
.#config        .#rcsinfo       commitinfo      editinfo        modules,v       taginfo,v
.#cvswrappers   .#taginfo       commitinfo,v    editinfo,v      notify          verifymsg
.#editinfo      .#verifymsg     config          history         notify,v        verifymsg,v
これらは CVS の動作を設定するために必要なファイルなのですが、 実は、これらのファイルも、すでに CVS で管理されているのです。

その証拠に、CVSROOT というモジュールをチェックアウト/チェックインすることができます。

まぎらわしさを防ぐために、work というディレクトリを作成し、 その中で作業しましょう。

% mkdir work
% cd work
% cvs co CVSROOT

cvs checkout: Updating CVSROOT
U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/editinfo
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg
レポジトリの中の CVSROOT にはたくさんファイルがありましたが、 チェックアウトして取り出されるファイルは、拡張子のないファイルだけです。


CVS ディレクトリ

先ほどのメッセージには出てきませんでしたが、 CVSROOT/CVS というディレクトリが作成されていることに注目してください。

CVS のレポジトリからモジュールをチェックアウトしたときには、 必ず作業ディレクトリに CVS というディレクトリが作られます。

ここには少なくとも3つのファイルが作成されます。

% cat CVSROOT/CVS/Entries
/checkoutlist/1.1/Tue Aug 10 01:54:52 1999//
/commitinfo/1.1/Tue Aug 10 01:54:52 1999//
/config/1.1/Tue Aug 10 01:54:53 1999//
/cvswrappers/1.1/Tue Aug 10 01:54:52 1999//
/editinfo/1.1/Tue Aug 10 01:54:52 1999//
/loginfo/1.1/Tue Aug 10 01:54:52 1999//
/modules/1.1/Tue Aug 10 01:54:53 1999//
/notify/1.1/Tue Aug 10 01:54:52 1999//
/rcsinfo/1.1/Tue Aug 10 01:54:52 1999//
/taginfo/1.1/Tue Aug 10 01:54:52 1999//
/verifymsg/1.1/Tue Aug 10 01:54:52 1999//
D

% cat CVSROOT/CVS/Repository 
CVSROOT

% cat CVSROOT/CVS/Root 
/home/speech/nishi/CVS_DB
これらの具体的な内容は、ここでは触れません。


モジュールに対する作業を終了する

普通はここで、モジュールに対して何らかの作業をします。 編集して、その結果を登録したり、差分を確認したり、作業の内容はさまざまです。 今回は、ただ取り出して閲覧した、ということにしておきましょう。

ここで、チェックアウトしたモジュールに対する作業が終了したときの 手続きを覚えましょう。release と言います。

% cvs release -d CVSROOT
You have [0] altered files in this repository.
Are you sure you want to release directory `CVSROOT': y
ここでは release すると同時にチェックアウトしたファイルの削除も行うため、 cvs release に -d オプションをつけて実行しています。

release と、ただ rm -r でファイルを削除することとの違いは、 本当に放棄しても良かったのかどうかを確認してもらえること、 そして、「私はこのモジュールを放棄しました」という記録がきちんと レポジトリに残ること、です。


Takuya NISHIMOTO
Last modified: 2009-09-05