ローカルプロジェクトと組織間の競合の解決
project deploy preview を実行して、ローカルプロジェクトと組織間で競合する変更が見つかったとします。たとえば、次のコマンド出力は、WidgetClass には競合する変更があるが、GizmoClass はリリースの準備が完了していることを示しています。
1sf project deploy preview --target-org DevSandbox
2
3Conflicts [1]. Run the command with the --ignore-conflicts flag to override.
4 Type Fullname Path
5 ───────── ─────────── ───────────────────────────────────────────────────────
6 ApexClass WidgetClass force-app/main/default/classes/WidgetClass.cls-meta.xml
7
8No files will be deleted.
9
10Will Deploy [1] files.
11 Type Fullname Path
12 ───────── ────────── ──────────────────────────────────────────────────────
13 ApexClass GizmoClass force-app/main/default/classes/GizmoClass.cls-meta.xml
14
15No files were ignored. Update your .forceignore file if you want to ignore certain files.実際にソースをリリースしようとすると、Salesforce CLI は競合を再度報告し、操作が完了せずに停止します。project retrieve preview を実行したときにも、同様の競合メッセージが表示されます。正常にリリースまたは取得を行うには、競合を解決してから、ローカルプロジェクトと組織のいずれかを解決済みのファイルで上書きします。では、これがどのように機能するかを見てみよう。
競合する変更の上書き
ローカルバージョンが正しいと判断した場合は、リリース時に --ignore-conflicts フラグを付けることで、組織内の競合する変更を上書きします。この例では、WidgetClass のみに競合する変更があるため、先にそのコンポーネントだけをリリースして競合を解消し、その後で競合のないソースをリリースします。
1sf project deploy start --metadata ApexClass:WidgetClass --ignore-conflicts --target-org DevSandboxDevSandbox 組織に、ローカルプロジェクトにあったバージョンと同じ WidgetClass が配置されます。project deploy preview を再度実行すると、競合する変更のメッセージは表示されなくなります。
一方、組織内の WidgetClass のバージョンが正しいと判断した場合は、競合を無視して DevSandbox 組織のバージョンを取得し、ローカルコピーを上書きします。
1sf project retrieve start --metadata ApexClass:WidgetClass --ignore-conflicts --target-org DevSandboxローカルプロジェクトに、組織にあったバージョンと同じ WidgetClass が配置されます。
すばらしい。これで競合は解決しました。次に、GizmoClass とその他の新しいローカルソースのリリースを完了するために、特別なフラグを付けずに project deploy start を実行します。
1sf project deploy start --target-org DevSandbox
2Deploying v59.0 metadata to test-ikspctiorkzs@example.com using the v59.0 SOAP API.
3Deploy ID: 0Af8D00000pNtEUSA0
4Status: Succeeded | ████████████████████████████████████████ | 1/1 Components (Errors:0) | 0/0 Tests (Errors:0)
5
6Deployed Source
7=====================================================================================
8| State Name Type Path
9| ─────── ────────── ───────── ──────────────────────────────────────────────────────
10| Created GizmoClass ApexClass force-app/main/default/classes/GizmoClass.cls
11| Created GizmoClass ApexClass force-app/main/default/classes/GizmoClass.cls-meta.xml