=begin
= CVS の使い方 − 最低限編
((::))
* 編集者: 森川靖大、塚原大輔
* 最終更新: 2004/11/02 (塚原大輔)
* 新規作成: 2004/09/29 (森川靖大)
((::))
((:
:))
((::))
Contents
<<< cvs-usage1.hindex.rd
((:
:))
((:
:))
以下は、ここまでに設定した cvs のリポジトリ内のプロジェクトで作業をす
るための最低限の設定および必要なコマンドである。
必須ではないものの便利な機能については
(())を参照のこと.
== 始め一回だけ行なう作業
=== CVS の環境変数設定
まずは cvsroot を指定する環境変数 CVSROOT と www.gfd-dennou.org へ
のアクセス方法を指定する環境変数 CVS_RSH を設定する. (なお, これら
を指定しなくともコマンドに直接指定する方法もある).
$ export CVSROOT=:ext:www.gfd-dennou.org:/GFD_Dennou_Club/ftp/arch/hoge/cvsroot
$ export CVS_RSH=ssh
なお, www.gfd-dennou.org 内で作業をおこなう場合には
$ export CVSROOT=/GFD_Dennou_Club/ftp/arch/hoge/cvsroot
のみでも構わない.
=== 作業用コピーを取得
上記のように環境変数の指定が完了したら, 作業用コピーを置く場所まで
移動する. (...とはいえ, 作業用コピーの置場自体は後に動かしても構わ
ない). ここでは /home/foo 以下に hoge0 というプロジェクトの作業用コ
ピーを展開することとする.
$ cd /home/foo
$ cvs checkout hoge0
もしも ssh で接続する場合はパスワードが聞かれ, 成功すればリポジトリ
内の現在の最新情報が作業用コピーとして /home/foo/hoge0 にコピーされる
はずである. 原則的にこの作業は 1 度行なえば良い.
なお, CVS という CVS の作業用のディレクトリも生成されるが,
これは cvs の方で変更されるものなので変更してはいけない.
また, いったん cvs checkout したらリポジトリの設定が書き込まれるの
で以下の操作では CVSROOT 環境変数の設定は必要なくなる.
* 例1
* リポジトリを環境変数ではなく直接指定する場合は以下のようにす
る. オプション -P は cvs 登録されている空のディレクトリを
checkout しないためのオプションである. (デフォルトでこの指定
なので明示的に指定する必要は実際は無い)
$ cvs -d:ext:foo@www.gfd-dennou.org:/GFD_Dennou_Club/ftp/arch/hoge/cvsroot \
checkout -P hoge0
* 例2
* ブランチした資源を入手するには -r オプションを使う. 以下の
例では, www.gfd-dennou.org 上の /GFD_Dennou_Club/dc-arch/gate/cvsroot
というリポジトリの gate-toroku-system というプロジェクトに
おけるブランチ dennou を取得する.
$ cvs -d :ext:foo@www.gfd-dennou.org:/GFD_Dennou_Club/dc-arch/gate/cvsroot \
checkout -r dennou gate-toroku-system
== 日々行なう作業
=== 作業用コピーを最新版に更新
複数人での開発を行なっている際には, 自分以外の作業用コピーで行なわれ
た作業結果がリポジトリに反映されるので, 資源の編集作業を行う前には
必ず作業用コピーにリポジトリの最新情報を反映させなければならない.
update のもっとも簡単な方法は, 作業用コピーに移動し,
% cd /home/foo/hoge0
% cvs update
とする.
である. 以上で, 他人の編集内容が自分の作業領域に反映される.
もしもディレクトリが新たに追加されている場合には -d オプションを用いて
$ cvs update -d
としなければ作業領域に反映されない.
さらに空のディレクトリを削除したい場合には -P オプションを用いる.
したがってお勧めの一般的な update 方法は
$ cvs update -dP
である.
=== 作業用コピーを変更を登録
自分が行なった変更をリポジトリに登録するには以下のようにする.
commit のもっとも簡単な方法は作業用コピーへ移動し,
$ cvs commit -m 'コミットメッセージ'
である. 「コミットメッセージ」には何を変更したかを書き込むのが普通
である. コマンドを実行すると, そのディレクトリのファイルだけでなく
サブディレクトリも再帰的にコマンドが実行され, レポジトリへ反映され
る. 以下のように -m オプションを付けない場合は環境変数 $EDITOR で指
定されるエディタが起動し, そのエディタ上でコミットメッセージを書き
込むことになる.
$ cvs commit
なお, 以下のようにファイルを指定して commit することも可能である.
$ cvs commit -m 'Modify format.' Makefile Mkinclude
=== ファイルを新規に追加する場合
==== テキストファイルの場合
新たにファイルを追加する場合は add オプションを使った後に commit す
る. 例えば新たに, newfile というファイルを作成した場合, 以下のようにす
る.
$ cd ~/(newfileの存在する作業領域)
$ cvs add newfile
$ cvs commit -m 'Add newfile'
cvs commit しないと, ファイル追加がレポジトリに反映されない.
コミットメッセージには「そのファイルが何者か」書いてあると望ましい.
==== バイナリファイルの場合
なお, バイナリファイルを add する場合は以下のようにすることが望ましい.
$ cvs add -kb hoge.gif
$ cvs commit -m 'Add image file'
このオプションを追加すると, cvs においてデフォルトだと行なわれるキー
ワード展開が行なわれなくなり, 万が一バイナリファイルが破壊されること
を防げる. なお, 特定の拡張子に対してこれを自動で行なうことが可能であ
る. 詳しくは
((<バイナリファイルを安全に登録するために|URL:../customize/cvs-binary.htm>))
を参照せよ.
=== ファイルを削除する場合
ファイルを削除した時には cvs remove とする.
* 例1
* rmfile を削除する場合は以下のようにする。
$ cd ~/(rmfileの存在する作業領域)
$ rm rmfile
$ cvs remove rmfile
$ cvs commit -m 'remove rmfile'
* 例2
* オプションを -f 使えば同じ手順を一度に行なうことができる。
$ cd ~/(rmfileの存在する作業領域)
$ cvs remove -f rmfile
$ cvs commit -m 'remove rmfile'
=== ディレクトリを追加する場合
新たにディレクトリを追加する場合は add オプションのみでよい.
例えば newdir というディレクトリを作成した場合, 以下のようにする.
$ cd ~/(newdirの存在する作業領域)
$ cvs add dir
=== ディレクトリを削除する場合
ディレクトリを削除する場合は、ディレクトリ内を空にする。
(そのためにはディレクトリ内のファイルを((<ファイルを削除する場合>))
の通りに作業して削除する必要がある)。
例えば、deldir というディレクトリを削除するためには以下のようにする。
$ cd deldir
$ cvs remove -f *
$ cvs commit -m "..."
$ cd ..
$ cvs update -P
実際には、 ディレクトリを cvs 登録から削除することはできない。
ただし、ディレクトリ内を空にしておくことにより、update、checkout した
際に、作業用コピーにはこのディレクトリは作成されなくなる。
空にして消した後に再び同名のディレクトリを作成したい場合には
以前消したことを気にせず新たに add すれば良い。
具体的には以下のようにすると良い。
$ mkdir deldir
$ cvs add deldir
$ cd deldir
$ (file を作って add, commit)
このようにしてあらたにディレクトリを作られても、
以前空にするまでの記録がそのまま保持されている。
同名のファイルを作っても記録が追加されるだけで大丈夫。
=== ファイルやディレクトリの名前を変更する場合
cvs 登録は単体のファイル毎に管理されているので、
正確な意味では cvs においてファイル名やディレクトリ名を変更する
ことは出来ない。よって実際には削除と新規作成を行なうわけだが、
例えば以下のように作業することで、後々それが移動してきたファイル
だということが分かるように出来る。(これにより、名前が変更される
以前の log などを辿ることが可能になる)。
$ mv oldname newname
$ cvs remove oldname
$ cvs add newname
$ cvs commit -m "renamed oldname to newname" oldname newname
((:
:))
=end