B から C への反映の例では、C のファイルは反映目的で作業状態となり、B−C のそれぞれのファイル・ペアに対して衝突解決がスケジュールされます。しかし、衝突解決の際、B#head(B の最新リビジョン)か C#head のいずれかを選択しなければなりません。サブミットした後、衝突履歴は B#head が C へ反映されたことを示します。しかし、依然として B#1 が C へ反映されたという記録はありませんので、次に反映を実行したときには、再び同じ問題にぶつかることになります。
PERFORCEは、チェンジリスト555と556によって影響を受けた B 内のすべてのファイルを示し、それに対応する C のファイルを反映目的で作業状態にします。衝突解決を行う際、PERFORCEは3-ウェイ・マージを実行します。対応する C のファイルへマージされた B のそれぞれのファイルに対して、3-ウェイ・マージに使用されるベース・リビジョンは @554 となります。すなわち、反映される開始リビジョンの親リビジョン(1つ前のリビジョン)が、マージのベースとして使用されます。
また、もし B から C へすべての変更を反映したいと考え、B へサブミットされた最初のチェンジリストが555であることを知っているならば、次のように実行することもできます。:
B のファイルのリビジョン #1 がすでに C へ反映されたということを反映履歴が示していない限り、B から C への反映を行うときには、必ずリビジョン範囲を指定しなければなりません。99.2より前のリリースにおいて、引き続き実行する反映のために恒久的にベース・リビジョンを設定するには、まず最初にリビジョン #1 だけを反映し、それをサブミットしなければなりません。
ここに示すのは、これを実現するための1つの方法です。コードライン A にあるファイルが、チェンジリスト 500によってコードライン B へブランチされたとします。言い換えれば、B/...@500 が B におけるすべてのファイルのリビジョン #1 であるということです。今後 B から C へ実行する反映に使用する開始リビジョンを設定するには、B/...@500 から C に対して "反映を無視する" を実行します。:
確かに、コードラインがどのように進化したかによってはこれで正しく動作し、望む結果が得られるかもしれません。しかし、C/...@600 と指定することは、チェンジリスト600の中で A から C へブランチされたファイルだけを含むという点で異なります。C/...#1 と指定した場合には、直接追加されたファイルや他のコードラインからブランチされたファイルなど、C のパスへサブミットされたすべてのファイルを含んでしまいます。