よくある質問
【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/delete と move/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 を指定すると、 add と delete として検出されたファイルを比較し、 ファイル内容や類似性をもとにリネーム・移動を判定します。
条件を満たした場合は次のように再オープンされます。
delete → move/delete
add → move/add
並列 move マッチング(--parallel)
大規模ワークスペースでは move 判定処理に時間がかかる場合があります。
P4D 2025.1 以降では、 --parallel=N を指定することで move マッチングを並列実行できます。
例
p4 reconcile -M --parallel=8 //...
効果
- ファイル比較処理を並列実行
- CPU コアを活用
- 大規模なリネーム・移動時の性能を改善
P4V の場合
P4V のプリファレンス設定に、移動したファイルを検出する設定が追加されています。
この設定を有効にすると、P4V の Reconcile 実行時に -M 相当の処理が実行されます。