最終更新日: Sat Aug 4 13:26:13 2001


CVSの使い方

自分がcosmoでCVSを使うときのメモを書いています。 とはいうものの、一応、yuka を 自分のIDに置き換えると そのまま使えるとは思います。(確認できないから分からないけど。) CVSを使いこなすと、かなり快適です。いつでも昔のが取出せるし。 つねにバックアップがある状態なので安心だし。 複数の人と共同開発したりするときにとくに威力を発揮します。

目次


CVSを使うときのお約束

CVSを使うとき、いろんなコマンド(cvs ????)を使いますが、 cvs co 以外は、全て編集しているディレクトリに移動して コマンドを実行すること。

はじめてのCVS

レポジトリの場所はマシン:cosmoで、 ユーザ:yuka が ディレクトリ:cprogを、 CVSで管理したいと仮定して説明します。

(1)から (4) が一通りの作業になります。 (a),(b),(0)は一度実行するだけでよいです。

(a) CVSを使う環境を整備

まず、CVSを使う環境を整えます。一度だけ実行します。
cosmo% mkdir ~/.CVSROOT
cosmo% cvs -d /home/yuka/.CVSROOT init
cosmo% cvs -d /home/yuka/.CVSROOT co CVSROOT
cosmo% cd CVSROOT
cosmo% cp ~yuka/public_html/memo/cvswrappers .
cosmo% cvs commit

(b) ディレクトリ:cprogのレポジトリを作成

次にディレクトリ:cprog をCVSで使えるようにします。 この作業は、新たにCVSで管理したいディレクトリごとにする作業です。 たとえば、public_htmlもCVSで管理しようと思えば、 public_htmlに対しても同じようにこの作業をします。
cosmo% cd  cprog
cosmo% cvs -d ~/.CVSROOT import cprog yuka init

エディタが起動するので
「cprog をCVSで管理し始める」
と入力し保存してエディタを終了する。
すると以下のようなメッセージがでて完了する。

N cprog/README
N cprog/prac1-1.c
……省略
No conflicts created by this import

(0) カレントディレクトリにレポジトリのcprogをコピー

すでに cprogがある場合取出せないので、 以下を実行して名前を変えておきます。
# rm してもいいのですが、まっ、一応ね。
cosmo% mv cprog cprog.old
実際にディレクトリ:cprogをカレントディレクトリにCVSから取出します。
cosmo% cd
cosmo% cvs -d /home/yuka/.CVSROOT co cprog    

注1)他のマシンからする場合
     cvs -d yuka@cosmo.ulis.ac.jp:/home/yuka/.CVSROOT co cprog cosmo:/home/cvs
     となります。
注2)他のマシンからする場合 cosmoのパスワード入力が必要です。

(1)手元のディレクトリ:cprogを最新に

cosmo% cd cprog
cosmo% cvs up
注)他のマシンからする場合 cosmoのパスワード入力が必要です。

(2)ファイルの編集します。

cosmo% cd cprog
cosmo% vi prac1-1.c
‥‥‥

(3)手元のディレクトリ:cprogを最新に

cosmo% cd cprog
cosmo% cvs up
注)他のマシンからする場合 cosmoのパスワード入力が必要です。

(4) 手元のディレクトリ:cprogをレポジトリに登録

% cd cprog
% cvs commit
  とすると、エディタが起動してlogの入力を促すので、logを入力して下さい。
  エディタを保存し、終了するとレポジトリへの登録がおわります。
注)cosmo 以外のマシンの場合cosmoのパスワード入力が必要です。
ここまでが一連の流れです。 以降、cprog を編集するときは、 (1) から (4) を 繰り返します。 新たなディレクトリ(たとえばpublic_html)を CVSで管理したいときは(b)から行います。 (a) は 二度とする必要はありません。 (0)は、ディレクトリ丸ごと手元にコピーしたいときだけ使います。

新しくCVSを開始したいとき

一度だけ実行すること。
% mkdir ~/.CVSROOT
% cvs -d /home/yuka/.CVSROOT init
毎回、入力がめんどうなので、alias を作成
.cshrcに以下の一行を追加
alias cvs-yuka 'cvs -d /home/yuka/.CVSROOT'

cosmo以外のマシンの場合は
alias cvs-yuka  'cvs -d yuka@cosmo.ulis.ac.jp:/home/yuka/.CVSROOT'
なお、ssh がある場合、何かと便利なので以下も追加
setenv CVS_RSH ssh

新しいレポジトリを作りたいとき

% cd 作りたいディレクトリ
% cvs -d ~/.CVSROOT import 作りたいディレクトリ yuka init

編集用ソースの取り出し

以下を実行すると、現在自分がいる場所の 直下にディレクトリごとファイルを取出します。
% cvs-yuka co 取出したいディレクトリ名

編集し終ったソースを格納

  % cvs commit
とすると、自動的に編集したファイルを検出してCVSの
レポジトリに入れようとする。
その変更分のログを残すように言ってくるので、エディタで書き込む。
(この時漢字コードは EUC コードに統一すること)

commitしようとしたが中止する

  % cvs commit
エディタが立ち上がったが、中止したいときは、
ターミナルにもどってCtrl+C をし、
a
Return

これで中止する。

ChangeLogファイルにチェンジログを書く

Ctrl-X 4a ← Muleでチェンジログの項目を出すやり方。

CVSに登録する前にチェック!!


diff したいとき

% cvs diff -u

特定の日付のものと現在のものとの差分の表示
例)2000年5月1日からの差分の表示
cosmo% cd cprog
cosmo% cvs diff -u -D "2000-05-01"


新しいファイルを足したいとき

プレインテキストの場合
% cvs add 追加したいファイル
% cvs commit

バイナリファイルの場合
% cvs add -kb zzz.gif
% cvs commit

不要なファイルを消したいとき

% cvs rm -f 消したいファイル
% cvs commit

更新したいとき

% cvs update
もしくは
% cvs up

変更したときにメールが来るようにする方法

% cvs-yuka co CVSROOT
% cd CVSROOT
% vi loginfo
一番下に以下の行を付け足す
^dbsupport  (echo "`id -un` が %{s} を変更しました。"; echo ""; cat) | /usr/local/bin/nkf | Mail -s "CVS log: データベース選択支援システム論文" uda@ulis.ac.jp,masao@ulis.ac.jp,yuka@nier.go.jp
DEFAULT /usr/local/bin/nkf | Mail -s "CVS log: %s" yuka@nier.go.jp
% cvs commit

関連リンク


江草由佳 (Egusa Yuka)
http://momiji.mimoza.jp/
yuka@nier.go.jp