この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

スクラッチ組織からプロジェクトへのソースの取得

最初のリリースを実行した後、ローカルファイルシステムとスクラッチ組織間で変更が追跡されます。スクラッチ組織のメタデータを変更すると、その変更がローカルプロジェクトで取得され、両方の同期状態が維持されます。

スクラッチ組織では、デフォルトでソース追跡が実行されます。ただし、継続的インテグレーション環境で迅速にリリースしたい場合など、ソース追跡を必要としないこともあります。スクラッチ組織の作成時、--no-track-source フラグを指定してソース追跡を除外できます。

1sf org create scratch --definition-file config/project-scratch-def.json --no-track-source

ソース追跡を無効にするその他の理由については、「スクラッチ組織の作成」を参照してください。

メモ

取得コマンド (このトピックで後述します) を実行するには、ターミナル (macOS および Linux) またはコマンドプロンプト (Windows) を開いてから、Salesforce DX プロジェクトディレクトリに移動します。

取得のプレビュー

組織からメタデータを取得する前に、project retrieve preview を実行することで、取得するコンポーネント、潜在的な競合、無視されるファイルをプレビューできます。たとえば、このコマンドは、MyGroovyScratchOrg という別名のスクラッチ組織から変更されたメタデータをローカルプロジェクトに取得する際のプレビューを表示します。

1sf project retrieve preview --target-org MyGroovyScratchOrg

組織の別名は、alias set を使用して作成できます。作成したすべてのスクラッチ組織のユーザー名と別名を表示するには、org list を実行します。

ヒント

スクラッチ組織からのメタデータの取得

変更されたソースをデフォルトのスクラッチ組織からプロジェクトに取得するには、次のコマンドを実行します。

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