S-JIS[2004-03-10/2005-06-26]
他人が同じソースの同じ箇所を修正した場合、CVSの華(!?)であるコンフリクト(衝突)が発生して、そのままではコミットはおろか更新も出来なくなる。[2004-06-09]
コンフリクトが起こること自体はCVSとして当然のことなんだけど、Eclipse2の場合、このエラーが分かりにくい。
更新作業中に「サーバーが追加情報を提供しませんでした」という内容の「更新の実行中に問題が発生しました」ダイアログが出た場合、コンフリクトが発生している可能性が高い。
どのファイルで発生したかまでは表示してくれないので、別途エラーが起きている箇所を探す必要がある。
まずはコンフリクトを疑い、検索で「<<<<<」や「=====」や「>>>>>」を探してみるのがよさそう。
もしくは同期化で競合(衝突)が起きているファイルだけ表示するとか。
CVSのkオプションを指定することにより、ファイルをテキストとして扱うかバイナリーとして扱うかを決めることが出来る。[2004-06-29]
ちょっと特殊な拡張子のファイルだと、テキストであるにもかかわらず(デフォルトで)バイナリーとして扱われてしまうことがある。バイナリーの場合、更新時にマージされず、リポジトリー側の内容で上書きされてしまう。
デフォルトのkオプションはファイルの拡張子毎に決まっており、以下の手順で追加変更できる。[2005-06-26]
ファイル毎にkオプションを変更するには、以下のようにする。
これにより、kオプションがコミットされてリポジトリーに記録される。
ただし、その後に他の人が更新を行っても、kオプションがその人のローカルに反映されない。
更新はローカルのkオプションに従って行われる。(ローカルがバイナリーなら、バイナリ扱い)
コミットもローカルのkオプションに従う。ただし、リポジトリーのkオプションが書き換えられることはない。
置換(HEADから最新)を行っても、ローカルのkオプションは変わらない。
一旦ファイルを削除し、そのファイルをリポジトリーから復帰させる(ディレクトリごと置換を行う)と、kオプションもリポジトリーのものに変わる。
既存ファイルでなく、新規のファイルのkオプションを指定しておきたいときは、コミット前にkオプションを変更しておく。[2004-09-08]
現在のkオプションを確認するには、以下のようにする。
すると、ダイアログの右ペインにCVS関連の情報が表示される。
項目 | 値の例 | 説明 |
---|---|---|
変更 | はい | ローカルに変更がある(コミット前) |
いいえ | ローカルに変更がない | |
キーワード・モード | バイナリー(-kb) | バイナリー |
キーワード拡張のあるASCII(-kkv) | テキスト($DATE$といったCVSキーワードを展開する) | |
タグ | ヘッド | タグやブランチの状態 |