60 | kis00022 | yav | 1994/11/20 04:26:03 |
前へ
後へ
上へ
|
ファイルの排他制御とバージョン管理の考察
☆ はじめに
ネットワークの利点としてファイルを共有することができる
ということがありますが,ファイルの排他制御やバージョン
管理がきちんとしていなければ様々なトラブルが発生します.
私の職場でも10BASE2のイーサのケーブルで計算機を接続して
ネットワークを構築し,複数の人数でソフトウェアの開発を
行ってますがソースファイルの排他制御やバージョン管理は
必要不可欠な機構です.
最終的には RCS - Revision Control Systemを使用すること
によって,この機構を実現するようになりました.
もちろん順調に運用できるまでに様々な問題が発生しました.
その度に無い知恵をしぼり,その場をしのいできたわけです.
その際の解決方法などをまとめましたので,
これからネットワークを使用して複数人数でプロジェクトを
進めなければならない状況等にある方の参考にしてください.
もちろん,もっとスマートな解決法を発見したら,私達にも
教えてくださいね.
☆ ネットワーク構成
まずネットワークの構成の紹介をします.
接続されているホストは次のとおりです.
NFS Server/Cliant
mio SONY NWS-1750 NEWS-OS R3.3a (4.3BSD相当)
pochi IBM-PC/AT cpt. Linux 1.1.8
NFS Cliant
serina NEC PC-9801DA MS-DOS v3.3c
ami IBM-PC/AT cpt. PC-DOS v6
coco EPSON PC-486GR MS-DOS v5
moki NEC PC-9801DA MS-DOS v5
acid EPSON PC-486GF MS-DOS v5
mioとpochiがNFSサーバとなり共有可能なファイルシステム
を提供します.DOSのクライアントはPC-NFSなどのソフトを
使用してサーバの提供するファイルシステムを仮想ドライブ
としてアクセスします.
以上がネットワークの概要です.
☆ 問題点
さて,本題のファイルの排他制御とバージョン管理です.
まず,みんながunix上で作業する場合には,
RCSファイルをファイルサーバに入れといて,
そのディレクトリを各人のワークディレクトリに
% ln -s /pochi/rcsdir/angel RCS
などのようにRCSディレクトリとしてシンボリックリンクし
てRCSファイルをみんなで共有するようにすれば問題ありま
せん.
しかしDOS上で作業をする場合には,次のような問題が発生
しました.
DOSにはシンボリックリンクの機能がない.
DOSは,"main.c,v"のような名前のファイルを扱えない.
DOSのテキストの行末はCR+LFである場合が多い.
私達はこれらの問題を,RCSを変更することによって解決す
ることにしました.
☆ ファイルネーム - CP/Mの遺産を大切に
まず,
DOSは,"main.c,v"のような",v"のついた名前のファイルを
アクセスできないという問題です.
これは,",v"のついていないファイルもRCSファイルとして
扱うように変更することでなんとかしました.
DOSにRCSを実装する場合には避けられない問題ですから,
既にDOSに実装されたRCSではこのような変更が加えてある
ものもあると思います.
",v"を付けないとRCSファイルと作業ファイルの名前は同じ
になってしまうので.ワークディレクトリにRCSファイルを
置くことができなくなってしまいますが,RCSディレクトリ
を作ってRCSファイルは必ずそこに置くようにすれば問題は
ないはずです.
☆ シンボリックリンク - 見果てぬ夢
次に
DOSにはシンボリックリンクの機能がない.
という問題です.
これは,ファイルサーバにあるRCSファイルのあるディレク
トリをRCSファイルの検索ディレクトリに加えることができ
ればいいわけですから,
RCSDIRという環境変数にディレクトリを定義してある場合
には,そのディレクトリもRCSファイルの検索ディレクトリ
として扱うようにRCSを変更しました.
その後,ワークディレクトリに"rcs.dir"というファイルを
作って,そのファイルにRCSディレクトリを記述しておくと
いうこともできるようにしました.
結局,RCSにシンボリックリンクの機能を持たせたような結
果になりました.
☆ 行末 - この定義されざるもの
最後に,
DOSのテキストの行末はCR+LFである場合が多い.
という問題です.
もしDOSのci等がRCSファイルを変更するときその行末をCR+
LFとして出力してしまったら,unixから見ればCRが行末に
くっついたように見えるはずです.そうなってしまうと,
余計な差分情報がRCSファイルに記録されるようになりかね
ないということになります.
ですから,RCSファイルの行末はCR+LFかLFだけかの(どちら
でもよいのですが)どちらかに統一しておく必要があります.
こういった場合にはDOSのCR+LFに合わせるべきかもしれませ
んが,RCSファイルはDOSのエディタなどで直接編集すること
はないはずですし,LFだけのほうがファイルサイズがお得と
いうセコい理由もあり,LFだけに統一することにしました.
そういうわけで,RCSファイルを変更する部分はバイナリと
してオープンして行末はLFだけにして出力するようにRCSを
変更しました.
☆ 結論
以上のような変更を加えてRCSを実装することによってソー
スファイルの排他制御とバージョン管理を行うことができる
ようになりました.
unixとDOSが同居してる環境でのファイルの排他制御とバー
ジョン管理について悩んでいる方の参考になれば幸いです.
UHD98984@pcvan.or.jp
yav
P.S.
というわけで,現在のうちの会社の状況を
ちょっとアカデミックにまとめてみました.
でも,内容が泥くさいのが情けないっす.