「コピー - 修正 - マージ」モデル

2007/03/30 (Fri) 22:07:46 JST

「実装によってはCVSのようになる」と書きましたが、EOFは使い方もCVSに似ているところがあります。 それは「コピー - 修正 - マージ」の作業です。

CVSではファイルのバージョンを管理するのにロックを使いません。 ユーザはそれぞれ編集したいファイルをリポジトリからコピーし、編集が終わったらマージをして作業結果を保存します。 CVSは複数のユーザから同じファイルの変更をマージされても、うまく差分をとって最新の状態を保ちます。

EOFでは主に?EditingContextを通してデータを操作します。 生成した?EditingContextを使ってデータを取得し、変更したら再び同じ?EditingContextを使って保存します。 ?EditingContextは、データに変更があればデータベースを更新します。

CVSを使った作業をEOF的に言い換えると、ユーザはデータを編集するための状況(=編集コンテキスト、?EditingContext)を作り、そのコンテキスト内で作業を行います。 CVSの編集コンテキストは人間が管理するので、CVS側から編集コンテキストの区別はできませんが、 EOFでは編集コンテキストが異なればデータの扱いが変わります。 例え内容の同じデータを取得したとしても、編集コンテキストが異なれば同一とはみなされません。 逆に同じ編集コンテキストであれば、異なる条件で取得した内容の同じデータは同一です。 実際に同じデータであるかどうかはオブジェクト同士を比較するだけでわかります。


Inverse Pages: WebObjects基礎研究室