[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cvs-ml 444] Re:リポジトリを分割する方法
馬場@京大宇宙物理 です。
Date: aki takada <aki@phoenixeng.co.jp>
From: [cvs-ml 443] Re: リポジトリを分割する方法
Subject: Fri, 25 Feb 2000 12:57:38 +0900
> > 新しいリポジトリに、旧リポジトリへ import することですが、
> > この他に、何かありますでしょうか。
>
> 分割する以前の履歴に戻れなくてもいいなら、新しく import す
> ればいいのですが、僕なら昔の履歴にも戻りたいので、今のリポ
> ジトリのコピーを二つ作って、それぞれのリポジトリから不要な
> 方のディレクトリ以下を cvs remove で CVS の管理対象から外し
> ます。
かなーーーり、姑息な手段を使って良いなら、以下でもよいかも。
# というか、僕ならこうしますし、既に何度もしましたという例です。
0. メンバー全員に、% cvs -nq update させて commit し忘れが
ないか確認する。
1. リポジトリを直接いじる。あらかじめ、
Info の「ファイルの改名と移動」を良く読んでください。
% cd /hoge/rep
% mkdir tmp1 tmp2
% mv A tmp1
% mv B tmp2
% tar cf - CVSROOT | (cd tmp1; tar xf -)
% mv CVSROOT tmp2
% mv tmp1 A
% mv tmp2 B
% chmod -R g+w A B
2. inetd.conf で、--allow-root=/hoge/rep/A --allow-root=/hoge/rep/B
のように列挙して SIGHUP.
3. 設定ファイル変更。
% cd /hoge/rep/A
して、passwd,writers,readers など編集する。次に、
% cvs -d :pserver:user@server:/hoge/rep/A login
% cvs -d :pserver:user@server:/hoge/rep/A checkout CVSROOT
% cvs -d :pserver:user@server:/hoge/rep/B login
% cvs -d :pserver:user@server:/hoge/rep/B checkout CVSROOT
して、必要に応じて、CVSROOT/modules とか loginfo なんかを
修正 commit する。さらに、
% cvs -d :pserver:user@server:/hoge/rep/A checkout A
% cvs -d :pserver:user@server:/hoge/rep/B checkout B
して、A/ChangeLog とかで、作業記録を取っておくとともに、
ちゃんと懺悔しておく。:-)
4. 問題ないことを確認したら、メンバーに新たに
% cvs -d :pserver:user@server:/hoge/rep/A login
% cvs -d :pserver:user@server:/hoge/rep/A checkout A
% cvs -d :pserver:user@server:/hoge/rep/B login
% cvs -d :pserver:user@server:/hoge/rep/B checkout B
してもらうように通知する。
なお、1. では、必要に応じて、
% chgrp -R projA A
% chgrp -R projB B
してください。
また 4. で、危険を省みないメンバーは、
A. cvs login するかわりに ~/.cvspass の当該行をホゲる。
B. cvs checkout するかわりに、Info の「リポジトリの移動」を
参考に CVS/Repository と CVS/Root の変更だけで済ませる。
という解もあるでしょう。僕は何度かやってみたことがあります。
まあ、あんまりおすすめしませんが。
> サーバ/クライアントを pserver で運用してるのなら、サーバ
> のCVS が面倒見れる $CVSROOT は普通ひとつだとか、どちらにも
> 関わる作業者が $CVSROOT を切替えるのが面倒だとか、管理する
> ならひとつのマシンにひとつのリポジトリの方が楽だとか、なの
> でサーバ自体を分割するのでなければ、現行のままの方がいいか
> な?とも思います。
「普通ひとつ」だと確かにわかりやすいですし一般的ですが、別にそうい
うケースばかりでもないとおもいます。僕の関わっているリポジトリサー
バでは、pserver で --allow-root を使って 10 個のリポジトリを使って
います。サーバマシン10台用意するなどしたくないですし。
CVS は、アクセス制限の概念がかなり貧弱で $CVSROOT/CVSROOT 以下の
passwd,writers,readers くらいでしか制御できないですから、例えば以
下のような星取表のようなアクセス制限(というか分業体制?)をしたいと
すると、一つのリポジトリだけだと破綻しますよね。
proj-A proj-B proj-C
suzuki ○ ○ ○
yamada ○ △ ×
kato △ × ×
# ○は読み書き可、△は読み込みのみ可、×は読み書き不可とします。
こういう場合には普通は「紳士協定」でカバーするものでしょうし、リポ
ジトリで UNIX グループパーミッションをうまいこと工夫するという解も
あるでしょうが、それよりはリポジトリを分ける方が素直だとおもいます。
--
馬場 肇 ( Hajime BABA ) E-mail: baba@kusastro.kyoto-u.ac.jp
京都大学理学部宇宙物理学教室 博士後期課程
--