▼CVS 超入門▼

-- absolutely not for dummies. Be a human first.

[CVS超入門] [リンク集]

▽使い初め

▽普通でない方法で移行

▽枝についての基礎でない知識

▽その他

$Id: cvs.html,v 2.7 2017-10-05 21:19:10+09 kabe Exp $


CVS て何よ?

RCS をディレクトリ毎にも使えるように大拡張したものです。 (大きく間違ってはいまい…)

初期の CVS は 各種 RCS コマンドを発行していたので、 要するに RCS用のカブセモノです。 現行の CVS は RCS を内蔵しているので、 RCS を別途インストールする必要はありません。 (RCS完全統合はCVS 1.10からなので、意外に新しい)

CVSしかない機械で いらん苦労するんだこれが… (QNXとか…)

一人で使っているにはあまり関係ありませんが、 本当の大きな違いは「排他ロック」に基づくRCSに対し 「コピーマージ」のCVS、です。 みんなで閲覧に加え、各自で修正、までの自由度があります。 ロックは中央リポジトリへの登録(commit)時だけ発生します。

RCSではあまり使われていなかった枝やタグを積極的に活用できます。 (濫用もできます…)


動機

だいたい CVS を使い始めようと思い立つような時てのは、

要するに教科書通りの 「よし、今から新規に始めるプロジェクトは CVS で管理しよう」 というパターンに当てはまらないことのほうが多いので、 世に転がっている解説文は多少慣れてこないと結局わけわかんなかったりします。


リポジトリを用意しよう

RCSと違い、CVS では「リポジトリ」という、履歴ファイル (*,v) を ため込むディレクトリの下ごしらえが必要です。 新規プロジェクトでも既存プロジェクトCVS化でも必要。 とりあえずどっかに場所を決めて

	% mkdir ~/cvsroot
	% cvs -d ~/cvsroot init

すると ~/cvsroot/CVSROOT/ 以下にリポジトリ自体の 管理ファイルがいくつか作られます。

リポジトリは、必要に応じていくつ作ってもかまいません。 ふつーはプロジェクト毎あたりにするんじゃないかと思いますが。

リポジトリディレクトリ自体の名前(上の"cvsroot")は別になんでもいいんですが、 CVSROOTCVS は後で混乱するのでやめた方が無難です。

俺もリポジトリ作っていいの?

infoやFAQには「りぽじとり管理者ノ心得」みたいな章があって、 リポジトリの準備は管理者特権のような大仰な感じがしますが、

俺しかいじらないプロジェクトなら ~/cvsroot/ とかでも十分。 別にサイトに一つとかいった大きい粒度で用意する必要はなく、 「まとめて管理したい」単位で細かくリポジトリを用意するのもアリです。 ただ CVSROOT環境変数を毎回切り替えたり cvs -d をいちいち指定するのは めんどくさいので、ある程度大きめの粒度にすることが多いだけだと思います。

ただ、確かに複数人が commit を行ったり、 リポジトリを公開しているような運用では 明示的なリポジトリ管理が必要なことがある。

./RCS/ と違い、 リポジトリは編集するファイルと同居するような場所には 置けないので、結局は ~/cvsroot あたりに集めるのがすっきりします。

作業領域とリポジトリを近い場所に置きたい、 なら一段ディレクトリをかますことになりますが、 ↓あまり美しくないかも。 本来、作業領域は複数のものが開発者毎に分散していることが前提なので これは仕方がない。

	projectY_root/ --+-- cvsroot/	[cvs init projectY_root/cvsroot]
	                 |    +-- CVSROOT/    [cvs init で初期化]
	                 |    +-- projectY/   [cvs import projectY ...]
	                 +-- projectY/	[作業領域]
	                       +-- CVS/
	                       +-- Makefile
	                       +-- main.c

さすがに pserver でリポジトリを公開するような場合は、 リポジトリが分散していると色々めんどくさいので 一ヶ所に集めた方がいいと思いますが。


かべ@sra-tohoku.co.jp