主に複数名で開発をする際のソース管理というイメージが強いCVSですが、 一人で利用する場合も、ソースやドキュメントのバージョン管理など、有用です。 今回は、LinuxにCVSサーバを構築してみました。
まずは、www.cvshome.orgから、 CVSのソースをダウンロードします。
展開して、configureを実行します。PREFIXは、デフォルトで"/usr/local"となります。 完全に独立させたい場合は、"/usr/local/cvs"とでもすれば、良いでしょう。 今回はパスを貼るのが面倒なので、デフォルトのままとします。
$ ./configure
リポジトリが置かれるパスを、環境変数"CVSROOT"を指定します。
$ export CVSROOT=/home/bokupi/cvs
ここで値を設定しなくても、cvsコマンド実行時に、-dオプションで直接指定することも可能です。 -dオプションの値は、環境変数CVSROOTより優先されます。
リポジトリを作成します。HDDの初期化のようなイメージです。 リポジトリを作成しても、管理すべきデータはまだ格納されていない状態です。
$ cvs -d /home/bokupi/cvs init
-dオプション(或いは環境変数CVSROOT)で指定したディレクトリに、CVSROOTというディレクトリが作成されていることを、 確認して下さい。
別のマシンから接続する場合、幾つか方法がありますが、今回は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