【P4D 2025.1】p4 reconcileの挙動変更
概要
P4D 2025.1 から、p4 reconcile 実行時の move マッチング(リネーム/移動 検出) の動作が変更されました。
従来は、add と delete が同時に存在する場合、P4 サーバーが自動的に内容を比較し、類似ファイルを move/add・move/delete として関連付けていました。
P4D 2025.1 以降では、この move マッチング処理が デフォルトで無効 となり、明示的に -M (--match-moves) オプションを指定した場合のみ実行されます。
変更前(~2024.2)
p4 reconcile 実行時に、追加 (add) と削除 (delete) が混在している場合:
- P4 サーバ側でファイル内容を比較
- 類似している場合は自動的に:
move/deletemove/add
のペアへ変換
p4 reconcile //... 結果//depot/src/old.c#none - opened for move/delete//depot/src/new.c#none - opened for move/add
変更後(2025.1~)
p4 reconcile はデフォルトでは move マッチングを実施しません。
そのため、通常実行では:
- 削除 →
delete - 新規追加 →
add
としてそのまま登録されます。
例
p4 reconcile //...
結果//depot/src/old.c#none - opened for delete//depot/src/new.c#none - opened for add
move マッチングを有効にする方法
従来通り リネーム/移動 を検出したい場合は、新オプション -M を指定します。
基本構文
p4 reconcile -M //...
または:
p4 reconcile --match-moves //...
-M オプションの動作
-M を指定すると:
adddelete
として検出されたファイルを比較し、
- ファイル内容
- 類似性
を元にリネーム・移動の判定を行います。
条件を満たした場合:
delete → move/deleteadd → move/add
として再オープンされます。
並列 move マッチング (--parallel)
大規模ワークスペースでは move 判定処理に時間がかかる場合があります。
P4D 2025.1 以降のバージョンでは、--parallel=N を使用することで move マッチングを並列化できます。
例p4 reconcile -M --parallel=8 //...
効果
- ファイル比較処理を並列実行
- CPUコアを活用
- 大規模 な移動、リネーム時の性能改善
P4V の場合
P4V のプリファレンス設定に、移動したファイルの検出に関する設定が追加されています。
この設定を有効にすると、P4V からの Reconcile 実行時に -M 相当が使用されます。