次: , 上: Binary files


9.1 バイナリ・ファイルの問題

普段作業するファイルがバイナリであれば、バイナリ・ファイルを管理する必 要は明らかですが、それをバージョン管理に入れることは追加の問題を発生さ せます。

バージョン管理の基本機能の一つは2つのリビジョンの違いを示すことです。 例えば、別の誰かが新しいバージョンのファイルを格納すれば、何を変更して いて、変更が良いかどうかを決定したいと思うかもしれません。テキスト・ファ イルには、cvscvs diff コマンドでこの機能を提供します。 バイナリ・ファイルには、2つのリビジョンを取り出して、cvs の外部に あるプログラムで比較することができるでしょう (例えば、ワープロにはよく そのような機能があります)。もしそのようなツールがなければ、人に良いロ グメッセージを書くことを強制するなどの他の機構を通じて変更を追跡し、実 際にした変更が本当にそうしたいと思っている変更そのものであることを期待 しなければなりません。

バージョン管理システムの他の機能は2つのリビジョンをマージする機能です。 cvs ではこれは2つの文脈で発生します。1つめは使用者が分離された作 業ディレクトリで変更をしたときです (see Multiple developers)。2つ 目は `update -j' コマンドで明示的にマージしたときです (see Branching and merging)。

テキスト・ファイルの場合は、cvs は独立になされた変更をマージでき、 変更が衝突した場合は衝突を報せることができます。バイナリ・ファイルでは、 cvs にできることは、せいぜい2つの違ったファイルのコピーを出して、 使用者に衝突を解消するようにすることくらいです。使用者はどちらかのコピー を選ぶかもしれませんし、特定のファイル形式を知っている外部マージツール があればそれを実行するかもしれません。使用者にマージをさせることは、主 に使用者が偶然いくつかの変更を省略してしまわない、ということに依存して おり、エラーが発生する可能性が高いということに注意してください。

この過程が望ましくないなら、最良の選択はマージを避けることでしょう。別 の作業ディレクトリによるマージを避けるためには、Multiple developers の独占取得 (ファイル占有) の議論を参照してください。枝によ るマージを避けるためには、枝の使用を制限してください。