プットバックトランザクションの実行時に、ワークスペース管理ツールは、ファイルが最後に子から親に戻されてから、あるいは親から子に渡されてから親ワークスペース内のファイルが変更されていることを検出することがあります。この場合ワークスペース管理ツールは、その変更内容がファイルのコピーによって消されてしまわないようにプットバックトランザクションを中止し、変更内容の衝突が存在する可能性のあることを開発者に通知します。
通常、子ワークスペースの所有者は、親のファイルが変更されている場合、これを自分のワークスペースにコピーすることによって自分のファイルを更新しようとします。この更新ブリングオーバートランザクションの実行時に、子ワークスペース内の対応ファイルも最後に親からコピーした後変更されていることが判明すると、衝突が存在するものと判断されます。
親と子の両方で、対応する両方のファイルに別々の変更が加えられていると衝突が発生します。仮にワークスペース管理ツールが一方のファイルで他方のファイルを上書きしてしまうと、他方の変更内容は失われてしまいます。したがって、そのファイルが宛先にコピーされる前に、開発者はそのような衝突をすべて解決しておかなければなりません。
更新ブリングオーバートランザクションの実行時に衝突を検出すると、ワークスペース管理ツールは次のような処置をとります。
子ワークスペース内で、衝突の存在するファイルに関する親と子それぞれの SCCS 履歴ファイルをマージします。
その衝突の存在を該当開発者に通知します。
開発者の衝突解決の作業を支援します。
衝突解決の作業はすべて、子ワークスペース内で行なってください。
ほとんどの衝突の場合、次のような方法で衝突を解決できます。
衝突が解決されたバージョンとして親から子に最新デルタを取り込みます。
衝突が解決されたバージョンとして子からの最新デルタを受け入れます。得られたファイルは、衝突解決プロセスを経たバージョンであるため、プットバックトランザクションが親ワークスペース内で中止されることはなくなります。
親の最新デルタを子の最新デルタとマージします。
ワークスペース管理ツールには、衝突を解決するための機能が用意されていますが、その作業自体は開発者自身が行わなければなりません。衝突の解決方法についての詳細は、第 8 章「衝突の解決」を参照してください。