CVSサーバの構築

主に複数名で開発をする際のソース管理というイメージが強いCVSですが、 一人で利用する場合も、ソースやドキュメントのバージョン管理など、有用です。 今回は、LinuxにCVSサーバを構築してみました。

ダウンロード

まずは、www.cvshome.orgから、 CVSのソースをダウンロードします。

インストール

展開して、configureを実行します。PREFIXは、デフォルトで"/usr/local"となります。 完全に独立させたい場合は、"/usr/local/cvs"とでもすれば、良いでしょう。 今回はパスを貼るのが面倒なので、デフォルトのままとします。


$ ./configure

CVSROOTの指定

リポジトリが置かれるパスを、環境変数"CVSROOT"を指定します。


$ export CVSROOT=/home/bokupi/cvs

ここで値を設定しなくても、cvsコマンド実行時に、-dオプションで直接指定することも可能です。 -dオプションの値は、環境変数CVSROOTより優先されます。

リポジトリの作成

リポジトリを作成します。HDDの初期化のようなイメージです。 リポジトリを作成しても、管理すべきデータはまだ格納されていない状態です。


$ cvs -d /home/bokupi/cvs init

-dオプション(或いは環境変数CVSROOT)で指定したディレクトリに、CVSROOTというディレクトリが作成されていることを、 確認して下さい。

pserverの設定

別のマシンから接続する場合、幾つか方法がありますが、今回はpserverを利用することにします。 /etc/inetd.confに、次のような一行を追加して下さい。


cvspserver      stream  tcp     nowait  root    /usr/bin/cvs    cvs --allow-root=/usr/local/cvs pserver

あと、"/etc/services"を確認して、次の2行がない場合は、追加して下さい。


cvspserver	2401/tcp	#CVS client/server operations
cvspserver	2401/udp	#CVS client/server operations

設定ファイルの編集が終わったら、プロセスを再起動させます。


# killall inetd
# inetd

とりあえずこれで、サーバとしての設定はOKです。

リポジトリへの登録

ソースのあるディレクトリへ移動し、次のコマンドを実行して下さい。 カレントディレクトリ以下にあるソースを、"soft"というプロジェクト名で、 リポジトリに登録します。後ろ2つにある"sw"、"start"は、特に気にしないで大丈夫です。 HDDに例えるなら、パーティションが設定され、データの書き込みもされたところです。


cvs import -m "Create CVS Test Project" soft sw start

作業ディレクトリの作成

まずは作業ディレクトリを、適当な場所に作成して下さい。 作業ディレクトリとは、リポジトリから取り出したファイルのコピーを置き、 編集などの作業をするディレクトリです。


cvs checkout -d /home/bokupi/work soft

ディレクトリが指定されていないと、モジュール名(プロジェクト名)のディレクトリが作成され、 その配下にソースのコピーが配置されるので、注意しましょう。

作業ディレクトリの削除

作業用ディレクトリの削除したい場合は、次のコマンドを実行して、 コミットされていないファイルがないかチェックしましょう。


cvs release soft

問題なければ、rmコマンドで削除して下さい。

リポジトリにファイル追加

addコマンドで追加予約をして、commitコマンドで予約を実行して下さい。


$ cvs add filename
$ cvs commit filename

リポジトリからファイル削除

まずは作業ディレクトリにあるファイルを削除して下さい。 それから、removeコマンドで削除予約をして、commitコマンドで予約を実行して下さい。


$ rm filename
$ cvs remove filename
$ cvs commit filename

リポジトリのディレクトリ削除

リポジトリのディレクトリを、一発で削除できるコマンドはありません。 よくよく考えてみれば、そんな怖いコマンドないのが当然ですね。 そこで、ディレクトリ削除は少々面倒です。 まず、ディレクトリ内にある全てのファイルを、1つずつ削除していきます。 全てのファイルを削除して、ディレクトリが空になったら、-pオプションを付けて、updateコマンドを実行します。 -pオプションは、空ディレクトリがあった場合、それを削除するというものです。 このオプションは、デフォルトで有効になっています。 なので、もし何らかの理由で空ディレクトリが欲しい場合は、 ダミーファイルを置いておく必要があります。

リポジトリのディレクトリ改名/移動

全てのユーザーの作業コピーを削除して、リポジトリ内のディレクトリ名を変更します。 もし、作業コピーを削除していないユーザーがいたら、そのユーザーのcsvコマンドは無視されます。

リポジトリ内のファイル移動

作業コピー内で、該当するファイルの移動を行います。 それから、リポジトリにある古い位置のファイルに対し、削除予約を行います。 続いて、さきほど移動したファイルを、リポジトリに対し、追加予約を行います。 最後に、予約を実行します。


$ mv [old] [new]
$ cvs remove [old]
$ cvs add [new]
$ cvs commit -m "Renamed old to new" [old] [new]

作業ディレクトリの更新

作業ディレクトリ内に、リポジトリから最新の内容を取得します。 複数人で利用している場合は、重要です。 作業開始時は、必ずupdateを実施するようルール決めをしましょう。


$ cvs update

トラックバック