CVS Usage in Joint Project

概要

Concurrent Versions System (CVS) の元で Software の Source や Configuration data 等の Text file を一括して管理することによって、多数 の Version をひとつの Repository に蓄積し、Conflict の解決の自動化や Network wide な File の分配などの機能により、多数の Version の File の 同時管理や複数の Author による Software の同時開発を容易にすることが可 能となる。ある程度以上大きな Project では CVS は不可欠な機構である。

機能

CVS では、 などが可能。

これらのことはもちろん手操作でも行なうことが可能だが、できるだけ計算機 の手助けを受けて自動化をして、誤りを減らし、作業を効率化しようとするの が CVS である。

遠隔操作

いろいろな方法で Network wide に CVS を使用できるが、rsh が使用で きる場合には、Repository の指定に ":ext:server-name (:ext:jkcvs)" を追 加することによって、ssh を使用する場合には、さらに環境変数 CVS_RSH を ssh と設定する。
例: setenv CVSROOT :ext:jkcvs/jk/master ; setenv CVS_RSH ssh
その他に計算機に Login しなくても Source を読み出せるようにするた めに、pserver と呼ばれる CVS の Server を立上げて CVS が匿名で使用でき るようにするか、cvsweb という仕組みを用いて Web で提供する必要があると 思われる。

Joint Project で使用する cvs の Server の hostname を 'jkcvs' と することにし、当面は実体を jhfacc1 に置く。

管理者の役割

CVS の管理者は、それぞれの Project に関与する User を制限するため に Repository の Permission を管理したり、Repository の中の管理情報が 収められる CVSROOT という Directory 内の File を管理する必要がある。

管理を容易にするために、Repository の First level(及び Second Level) directory は管理者だけが作れるようにし、例えば、

First Level (Group 単位):
  Control Epics Linac RCS MR BT BL

Second Level (Application 単位):
  ioc-app  beam-app  misc-app  config
などを作っておき、個々 Project はその下に作るのがよいのではないかと思 われる。(計算機上での加速器の名前、Linac 等、も早く決める必要がある。)

ただし、Epics の directory tree については KEKB または横断化 EPICS Group の CVS Repository を使用する方向で調整する。重複した作業を行なう のは無駄だと思われる。(しかし、Device Support や Extension 等で加速器 独自と思われる部分は、当初は通常の Application として開発し、他の Group で使用できるようになってきたら、Epics の Repository に移す。

Epics の Directory tree は加速器ごとに Config file などが多少異なるの で、Joint Project の Version をひとつの Branch として管理する。

使い方の例

使い方については山本氏の Document の他、Internet 上にも多数の情報 があるが、最低限の Command 例を書く。
cd {source directory 1}
cvs import ioc-app/project1 v1 r1
(sources in/below current directory are imported)

mkdir {development directory 1}
cd {development directory 1}
cvs checkout ioc-app/project1
(new directory ioc-app/project1 is created, and sources are copied into it)

(if some modifications are made)
cvs commit

(new source file file1)
cvs add file1
cvs commit

cvs update
(synchronize/incorporate changes from others)

from remote machine

setenv CVSROOT :ext:jkcvs/jk/master
setenv CVS_RSH ssh
(if you don't have cvs in your path,
setenv CVS_SERVER /jhf/local/bin/cvs)

cvs checkout ioc-app/project1
(password prompted, then new directory ioc-app/project1 and sources are created)

その他

ここに書いたことは開発時の File に関わることであり、運転に使用す る File は、あらかじめ決められた Directory に Repository から checkout/update することになるが、その Directory の場所などは別に決め る。
日本語の Document が

http://www-linac.kek.jp/cgi-bin/info2www?(cvs-ja)
にある。その他には、

http://www.cvshome.org/

http://www.loria.fr/~molli/cvs-index.html

[Please Comment on This Page]
<[email protected]>, Jan.13.2002 - Jan.25.2002.
[ jhfacsv03 ] [ Joint Project ] [ e-/e+ Linac ] [ Accelerator ] [ KEK ] [ JAERI ]