60kis00022yav 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.
というわけで,現在のうちの会社の状況を
ちょっとアカデミックにまとめてみました.
でも,内容が泥くさいのが情けないっす.

前へ 後へ 上へ