スクラッチ組織からプロジェクトへのソースの取得
取得コマンド (このトピックで後述します) を実行するには、ターミナル (macOS および Linux) またはコマンドプロンプト (Windows) を開いてから、Salesforce DX プロジェクトディレクトリに移動します。
取得のプレビュー
組織からメタデータを取得する前に、project retrieve preview を実行することで、取得するコンポーネント、潜在的な競合、無視されるファイルをプレビューできます。たとえば、このコマンドは、MyGroovyScratchOrg という別名のスクラッチ組織から変更されたメタデータをローカルプロジェクトに取得する際のプレビューを表示します。
1sf project retrieve preview --target-org MyGroovyScratchOrgスクラッチ組織からのメタデータの取得
変更されたソースをデフォルトのスクラッチ組織からプロジェクトに取得するには、次のコマンドを実行します。
1sf project retrieve startこのコマンドは、取得したデータと、Salesforce DX プロジェクト内の配置場所を表示します。このサンプル出力は、force-app/main/default ディレクトリに設定された DiscountSpecial Apex クラスと DiscountPermSet 権限セットの取得について示しています。
1Preparing retrieve request... ⣟
2Preparing retrieve request... Succeeded
3
4Retrieved Source
5====================================================================================================================
6| State Name Type Path
7| ─────── ─────────────── ───────────── ────────────────────────────────────────────────────────────────────────────
8| Created DiscountSpecial ApexClass force-app/main/default/classes/DiscountSpecial.cls
9| Created DiscountSpecial ApexClass force-app/main/default/classes/DiscountSpecial.cls-meta.xml
10| Created DiscountPermSet PermissionSet force-app/main/default/permissionsets/DiscountPermSet.permissionset-meta.xmlフラグを使用することで、変更されたすべてのソースではなく、取得したいソースを対象に指定できます。
- -metadata フラグは、Apex クラスなどの特定のメタデータコンポーネントを取得する場合に使用します。
- --manifest フラグは、マニフェストファイル内のコンポーネントを取得する場合に使用します。
- --source-dir は、パッケージディレクトリ内のソースを���得する場合に使用します。
使用例や、指定できる他のフラグについては、project retrieve start のリファレンス情報を参照してください。
取得時に無視するファイルの選択
プロジェクトとスクラッチ組織の間で同期しないファイルがある場合があります。そのようなファイルは .forceignore ファイルに追加して、取得コマンドで無視されるようにします。
取得でファイル競合が検出された場合
開発時、開発者はビルダーやエディターを使用して、ファイルシステムのファイルをローカルに変更したり、スクラッチ組織を変更したりします。通常、これらの変更は競合せず、固有のファイルが対象となります。また、project retrieve start コマンドではマージは処理されません。プロジェクトとスクラッチ組織は、1 人の開発者が使用するためのものです。
ただし、project retrieve start を実行して、競合が検出された場合、Salesforce CLI は処理を中止し、ソースを取得しません。代わりに、次のサンプル出力のような競合情報が表示されます。PropertyController の Apex クラスはローカルと組織の両方で変更されましたが、変更が競合しています。
1sf project retrieve start
2Preparing retrieve request... ⣾ Sending request to org
3 STATE FULL NAME TYPE FILE PATH
4 ──────── ────────────────── ───────── ───────────────────────────────────────────────────────────────────
5 Conflict PropertyController ApexClass <dir>force-app/main/default/classes/PropertyController.cls-meta.xml
6Preparing retrieve request... Error
7Error (1): There are changes in your local files that conflict with the org changes you're trying to retrieve.最初に維持する変更を決定します。組織内の変更を維持するには、--ignore-conflicts フラグを指定して取得を再実行します。
1sf project retrieve start --ignore-conflictsローカルでの変更を維持するには、project deploy start コマンドを実行して変更を組織にリリースし、--ignore-conflicts フラグを指定します。
1sf project deploy start --ignore-conflicts