このページは過去に掲載していたものをそのまま使用しています。

CVS HOWTO

自分専用の覚え書きです。cvs serverにファイルを登録する 方法から、どう使えば良いのかを書いてくつもりです。

Contents


すべての情報を知るには…

CVS-1.10に附属のinfoをhtmlに変換したので見てください。 コマンドの検索などは'Index'の方が便利です。

serverの立ち上げ方法 (tcpserver編)

tcpserverを使って次のようにしています。これはuser権限で動作します。 プロジェクトなどで複数人で利用する場合には適切なuserを作成して管理を 行うと良いでしょう。

tcpserver -x/etc/tcpsrever-local.cdb 0 2401 /usr/local/bin/cvs \
    --allow-root=/home/yasu/lib/CVS -b /usr/local/bin/ pserver

tcpserverを使う事の利点はIPによるアクセス制御を行う必要があったためです。

serverの立ち上げ方法 (inetd編)

まず/etc/servicesに"cvspserver 2401/tcp"という記述がなければ追加します。 NetBSD-1.4.2やVineにはあったのですが、OpenBSD-2.7にはそのような記述は 存在しませんでした。そうしたら/etc/inetd.confに次のように追加します。

cvspserver      stream  tcp     nowait  cvs /usr/bin/cvs  \
    cvs --allow-root=/var/cvs -b /usr/bin pserver
'\'で折り返しているが、実際には一行で書かれている
/etc/hosts.{allow,deny}の両ファイルで適当なアクセス制限をすることを 忘れないようにしたい。tcpdを使っている場合には/usr/bin/cvsの 部分を/usr/sbin/tcdpのようにinetd.confの他の個所を参考にして 変更してください。

importでファイルをサーバーに取り込むには

サーバーが動いたらそこにファイルを置かなくてはいけません。 そのためにはimportという方法を使います。

cvs -d :pserver:cvs@hoge:/home/yasu/lib/CVS \
    import -m <comment> <repository> yasu initial
最後の二つは<vendor-tag>と<release-tag>なので 適当に自分のlogin名をつけておきました。<repository>には htmlな文書は"cvs/cvs-html"などとして、後でプログラムに"cvs/cvs-source" などとすると、repositoryを階層化することができるので便利かもしれません。

checkoutの方法

"checkout"によってserverからsource filesを取得して編集するための 準備を行ないます。

cvs -d :pserver:cvs@hoge:/home/yasu/lib/CVS \
    checkout <repository>

updateとcommitの違いは…

updateはserverにあるfilesが変更されていると、その変更点をlocalに すべて反映しようとします。またcommitはlocalで行なった変更をserverに 反映させるために使います。

serverとlocalのどちらのfilesが変更されるのか に注目すると比較的楽に覚える事ができるでしょう。

バイナリファイルの追加は…

まず最初にバイナリファイルは最初に加えずに、後から付け足すようにしましょう。 addコマンドを使うときに、'-kb'を指定することでバイナリファイルであることを 指示する事ができます。

cvs -d :pserver:cvs@hoge:/home/yasu/lib/CVS \
    add -kb <file_name>
cvs -d :pserver:cvs@hoge:/home/yasu/lib/CVS \
    commit <file_name>

fileを明示的に指定してaddとcommitを行う方が安全です。

rdiffで差分作成もラクラク

ある程度の作業が終ったら、tagでラベリングをしておくようにします。 そうしてラベル"rel-1"と"rel-3"の間の差分を作成したいと思ったときには

cvs rdiff -u -r rel-1 -r rel-3 <module_name>
のようにすると良いでしょう。

分岐(branch)で作業の並行化

分岐(branch)を使う事で作業を独立して進める事ができるようになります。 これはtag付けを行なう際に"-b"を加えることで行なえます。 もし"rel-4"というタグを"-b"を加えて作成されているとします。

cvs checkout -r rel-4 <module_name>

分岐(branch)での作業をメインに更新

分岐(branch)を作成して作業を進めていって完成した場合には 幹(main)を更新するようにします。rel-3を幹に反映させたい場合には 幹にrel-3の変更を反映させてからcommitします。

cvs checkout -j rel-3 <module_name>
cvs commit -m "merging rel-3 release"

Yasuhiro ABE <yasu@dengaku.org>
Last modified: Sun Jun 24 10:27:24 JST 2001