Skip to main content.
Google custom search

NetBSD CVS HOWTO

導入と目的

始めよう

CVSを使う

その他役に立つCVSの操作

他の情報源


導入と目的

CVSとは何か? (トップ)

CVS とはConcurrent Versions System (協調バージョンシステム) の略です。 CVSは同一ファイルで作業する複数の開発者によるソースの変更を追跡しつづける ように設計されているソースコントロールあるいはリビジョンコントロール ツールです。開発者が選択したように同期をとりつづけることが できます。特に、CVSはNetBSDプロジェクトでは ソースツリーを維持するツールとして使われています。

重要なのは、CVSの協調機能のおかげで複数の人々が同時に作業できる ことに注目することです。RCSとは違いファイルのロックはありません。


始めよう

この章ではシステム上にCVSをインストールする基本的なステップを解説します。

CVSのインストール (トップ)

ローカルマシンにCVSをインストールする必要があります。 全ての作業を行うマシンであって、CVSのサーバーではありません。 マシンにCVSがすでにインストールされていなければ、 パッケージコレクション から CVS をインストールして下さい。

CVS用の環境設定 (トップ)

CVSを使う予定であるローカルマシンで、シェルにcshtcshを使っていれば、.cshrcファイルに 以下の行を付け加えて下さい。

setenv CVSEDITOR vi
setenv CVSROOT yourusername@cvs.NetBSD.org:/cvsroot
setenv CVS_RSH ssh

もしshbashをお使いでしたら、 .profileファイルに以下の行を付け加えて下さい。

CVSEDITOR=vi
CVSROOT=yourusername@cvs.NetBSD.org:/cvsroot
CVS_RSH=ssh
export CVSEDITOR
export CVSROOT
export CVS_RSH

CVSの作業用ディレクトリーを作る (トップ)

私は自分のマシン上に/usr/cvs にCVS関連のものを 全て置いていますが、これは人の好みによります。 このドキュメントの残りではマシンに/usr/cvs ディレクトリーを 作ったものとします。もう一度繰り返しますが、これはローカルマシンであって、 CVSサーバーではありません。


CVSを使う

この章ではCVSを使う基本的なステップを説明します。

例 (トップ)

この章では空の/usr/cvs ディレクトリーから始め、 htdocs/people/ モジュールを追加し、変更を加えてコミットする方法を示します。 基本的なステップは以下の通り:

cd /usr/cvs
cvs checkout htdocs/people
cd htdocs/people
vi developers.xml
make
cvs ci developers.xml developers.html

これらのステップを以下により詳しく説明します。

cvs checkout htdocs/people

このコマンドで、CVSが htdocs/people というディレクトリーをローカルマシンにチェックアウトします。 これは htdocs/people 以下にある各ファイルの最新バージョンが CVSサーバーからローカルマシンへコピーされることを意味します。 加えて、 CVS ディレクトリーが /usr/cvs, /usr/cvs/htdocs, /usr/cvs/htdocs/people の中に作られます。重要なので覚えておいて欲しいのは、CVSのチェックアウトは RCSにあるチェックアウトとは違い、ファイルをロックしません。 つまり、他の開発者がチェックアウトされたファイルにもアクセスできるのです。

一度ディレクトリーをローカルマシンにチェックアウトしたら、 このディレクトリー用に再びcvs co、つまり cvs checkout をする必要はありません。もし以前チェックアウトしたディレクトリーを最新のバージョンへ アップデートしたければ、例えば単純に cvs update htdocs/people とすればよいです。

ディレクトリーをチェックアウト (以前に目的のモジュールをチェックアウト していれば、アップデート) したら、次はファイルを編集します。 編集が全て完了したら、以下のようにします:

  make

こうすると、 developers.xml ファイルをもとに developers.html ファイルが作り直されます。それから以下のようにします:

cvs ci developers.xml developers.html

このコマンドは新しいバージョンを反映するため、 CVSサーバーに変更部分をアップロードし、各ファイルのRCSヘッダーをアップデートします。 変更をチェックイン (コミット) したら、変更に関して短く書き記すように促されるでしょう。

ただし、ソースツリー内での新しい項目の追加とファイル再生成は、 普通はそれぞれ別に commit します。

CVS モジュール (トップ)

CVSでは、モジュールとは一つのファイルや複数のファイルがあるディレクトリーを 指すこともありますし、ディレクトリーツリーの全体を指すこともあります。 NetBSD のトップレベルCVSモジュール のリストでは、NetBSDツリーのトップレベルCVSモジュールを列挙しています。 特に注目すべき他のトップレベルモジュールは以下の通りです:

htdocs
NetBSD のWWW ページ。
othersrc
NetBSD に関連があるが NetBSD そのものではないコード。

トップレベルモジュールはそれぞれ、トップレベルを全てチェックアウト (し、アップデート) することも、低いレベルのモジュールをチェックアウト (し、アップデート) することも可能です。 例えば、htdocs モジュール全体をチェックアウトするには、 こうします:

cd /usr/cvs
cvs checkout htdocs

htdocs/people サブディレクトリーを入手するだけならこうします

cd /usr/cvs
cvs checkout htdocs/people

これらの例のように、一度モジュールをチェックアウトする必要があることを 忘れないでください。例えば、すでに htdocs モジュールを チェックアウトして、最新のものにしたい場合は、こうします:

cd /usr/cvs
cvs update htdocs

新しいパッケージのインポート (トップ)

この章では 新しいパッケージのインポート の説明をいくつか補足します。

新しく作ったパッケージを追加する例をとりあげましょう。 この例ではCVSの材料が /usr/cvs にあり、 pkgsrc が そのサブディレクトリーにあると仮定します。 新しいパッケージをfoo/bar として、 /usr/cvs/pkgsrc/foo/bar.work ディレクトリーの中にあるとします。 このパッケージをソースツリーへインポートする段階は以下の通りになります:


cd /usr/cvs/pkgsrc/foo/bar.work
	
# 通常のテスト、つまりpkglintなどをします。
# files/patch-sum ファイルを生成するために、'make makepatchsum' するのを
# 忘れないでください。

grep TNF /usr/pkgsrc/doc/pkgsrc.txt

# このコマンドで"cvs import" を行うにあたり文法的に正しいかがわかります。
# (/usr/pkgsrc は/usr/cvs/pkgsrc へのシンボリックリンクです) 。

cvs import pkgsrc/foo/bar TNF pkgsrc-base 

# "bar.work" ではなく、"bar" であることに注意して下さい。

cd ../../..
cvs checkout pkgsrc/foo/bar 

# 全てが正常に行われたか確認するため、新しくインポートされたパッケージを
# チェックアウトします。

cd pkgsrc/foo
cvs update Makefile
vi Makefile 

# pkgsrc/foo/Makefile にbarを追加します。

cvs ci -m 'add & enable bar' Makefile

# pkgsrc/foo/Makefile へ変更をチェックインします。

cd /usr/cvs/pkgsrc/doc
cvs update CHANGES-YYYY

# これにより、最新のCHANGES-YYYYを確実に取得します。

vi CHANGES-YYYY

# foo/bar パッケージへの変更を書いたメモを作ります。

cvs ci -m 'Added foo/bar version 17.42' CHANGES-YYYY

# CHANGES-YYYY をチェックインします。


その他役に立つCVSの操作

CVS 出力 (トップ)

さまざまなCVSのタスクを実行すると、関係するファイルのリストをみることが あるでしょう。ファイル名は一文字のコードで表されます。 コードの概要は以下の通りです:

  • Updated (更新)
  • Patched (パッチ)
  • Conflict (コンフリクト)
  • Modified (ローカルで) (変更済み)
  • Added (追加済み)
  • Removed (削除済み)
  • ? (CVSの管理外)

他の情報源

NetBSD 特有 (トップ)

CVS 特有 (トップ)