▼RCSからCVSへの移行▼

[CVS超入門] [RCSからの移行]

RCSで管理していたものを CVSに移行するためには、 基本的には CVSリポジトリに RCS管理ファイル (*,v) を 移し替えるだけで済みます。

実は $prefix/share/cvs/contrib/rcs-to-cvs という そのものずばりのスクリプトがあるので、そっち使えばいいぢゃん という話もあります (が境界処理は苦手のような気がする)

$Id: cvs_rcs.html,v 3.4 2004/03/24 21:18:57 kabe Exp $


ファイルベタ置きの場合

要するに全ファイルが単一ディレクトリ直下に収まっていて、 ディレクトリをそれ以上掘ってない場合。 rcscleanが使えるので簡単です。

◇現在の作業場を掃除する
% rcsclean
登録済のファイルはこれで消えます。 残っているファイルは、RCSに登録していないか、 ロックがかかっている(編集中の可能性がある)もの。 普通は ci file で始末します。 未登録ファイルをCVS作業領域でも未登録にしておきたいなら放置。 ロックされたものは、そのままでは面倒な手順が必要になるので ci で始末します。
注: rcscleanはディレクトリ再帰しません。

◇RCS管理ファイルをCVSリポジトリへ移す
% mkdir $CVSROOT/projectV
% mv RCS/*,v $CVSROOT/projectV/
直接 リポジトリの $CVSROOT/ 以下にディレクトリを掘ります。 CVSリポジトリに格納される管理ファイルは要するに RCS管理ファイルと同じなので、 基本的には既存の RCS/*,v を移し変えるだけです。

◇作業場を CVS作業領域化する
% cd ..
% cvs checkout projectV
(作業場のディレクトリ名とリポジトリ名が両方 projectV である場合)
今まで使っていた projectV/ 以下に CVS/ と各作業ファイルが 展開されます。コンパイル等をやってみて使えるかどうかチェック。
(大量にエラー出るんだけど?)

◇確認
% cd projectV
% cvs -n update
? file と出てくるものが CVS未登録ファイルとなります。 未登録のまま残したいものだけ挙げられていればOK。 登録してないサブディレクトリなんかも?表示なので注意。

もちろんなんやかんやで失敗する可能性もあるので、 作業場のバックアップは前もって tar なんかでいちおう取っておきましょう。

作業領域とプロジェクト名が違う場合

リポジトリ中の名前 (projectV) は極力バージョン番号がつかない 形式が良いのですが、 作業場のディレクトリ名が projectV-2.01/ のようにバージョン番号が ついているときは
…ディレクトリ名を変更して作業すればいいだけなのですが、 それもヤという場合は


多階層な場合

要は単ディレクトリでやったことを再帰的にやればよいのです
が mv 一発とかいうわけにはいきません。 シェルスクリプトの威力がありがたい。 mv で個々の *,v を移すのはややこしいので、 現在の作業領域を直接リポジトリ化する方法を使ってみます。

◇まずはリポジトリに全部直接コピーしてリポジトリに突入
% cp -p projectV $CVSROOT/projectV
% cd $CVSROOT/projectV
◇再帰的に RCS/*,v を *,v に移す
% find . -name RCS -a -type d | sh -c 'while read line; do mv ${line}/*,v ${line}/..; rmdir ${line}; done'
消えていない RCS/ があれば ci で適当に始末します。

◇再帰的に rcsclean して RCS登録済ファイルは消す
% find . -type d | sh -c 'OPWD=`pwd`; while read line; do cd $OPWD; cd $line; rcsclean; done'
*,v でないファイルが残っていないか確認。

あとしまつ

いずれにしても、cvs checkout で必要なファイルが全部出てきて コンパイル等が通るか確認します。

こういった、cvs import を使わずに作ったリポジトリには 「ベンダ枝」(1.1.1) はありません。 なくても不都合はない、はず。

CVS化した直後の状態にタグを 打っておきたいてのはあるでしょうから、 早速

	% cvs tag CVS_IMPORTED			(新しい作業領域内にて)
	% cvs rtag CVS_IMPORTED projectV	(作業領域不要、直接リポジトリを操作)


かべ@sra-tohoku.co.jp