Helix Coreサーバ管理者ガイド: 基本 (2019.1)

フェッチとプッシュを使った分散開発

次のセクションでは、分散型サイトの間でp4 fetchp4 pushのコマンドを使用してコードを簡単に共有する方法を説明します。

以下のようなシナリオが挙げられます。

ゲーム会社のUkko Productionsは、フランス、日本、米国にオフィスを構えています。各サイトでそれぞれ異なるゲームコードの開発を担当しています。各サイトは、それぞれ「コンポーネント」と呼ばれるセクションを担当しています。この作業は、オフィスのHelixサーバ、ディポディレクトリ内のdevと呼ばれる場所で実行されます。devにはローカルでサブミット済みの変更が格納されます。

フランスのサイトでは日本と米国の開発者たちが使用するウィジェットを開発しているものと仮定します。まずフランスでは、コードをドロップしてウィジェットコードを日本と米国で使用できるようにします。日本と米国のサーバのドロップ先ディレクトリに対してp4 pushを使用します(下図の「1」を参照してください)。(または、日本と米国の開発者がp4 fetchを使用してフランスのコードをドロップディレクトリへコピーすることもできます。)その後、日本と米国の開発チームはp4 mergeを使用して、フランスのウィジェットコードを各自のdevディレクトリへマージすることができます(下図の「2」を参照してください)。これで、ウィジェットを各自の用途に合わせてカスタマイズできるようになりました。カスタマイズをフランスの開発者と共有する必要はありません。

米国と日本の開発者が部分的な変更をフランスと共有したい場合は、p4 pushを使用してフランスのサーバ上の固有のドロップ場所(日本と米国用に1つずつ)へこのコードをコピーします。(下図の「3」を参照してください)。(または、フランスの開発者がp4 fetchを使用してコードをドロップディレクトリへコピーすることもできます。)その後、フランスの開発者はp4 mergeを使用して、日本と米国のコードをdevディレクトリへマージすることができます(下図の「4」を参照してください)。

以降このサイクルが繰り返されます。

このシナリオは下の図のように表すことができます。

分散開発DVCS

次のセクションでは、このシナリオを実施するために必要なリモートの仕様の設定方法を説明します。

リモート仕様を構成する

p4 pushp4 fetchのコマンドを正しく動作させるには、日本、米国、フランスの3つのサーバのリモート仕様をそれぞれ正しく設定する必要があります。リモート仕様は、ローカルサーバがフェッチまたはプッシュ可能なリモートサーバを指定します。また、フェッチまたはプッシュされるファイルを指定します。(リモートおよびリモート仕様に関する詳細については、『分散バージョニング環境におけるHelix Coreサーバの利用』の「リモートを理解する」を参照してください。詳細については、を参照してください。)

日本の開発者はフェッチとプッシュをフランスのサーバに対して行うため、そのサーバのリモート仕様は以下のようになります。

RemoteID: ServerFrance
Address: ServerFrance:1666
DepotMap:
  //depot/code-dropA/... //depot/France-dev/...
  //depot/Japan-dev/... //depot/code-dropS/...

米国の開発者はフェッチとプッシュをフランスのサーバに対して行うため、そのサーバのリモート仕様は以下のようになります。

RemoteID: ServerFrance
Address: ServerFrance:1666
DepotMap:
  //depot/code-dropUSA/... //depot/France-dev/...
  //depot/USA-dev/... //depot/code-dropS/...

フランスの開発者はフェッチとプッシュを日本のサーバに対して行うため、そのサーバのリモート仕様は以下のようになります。

RemoteID: ServerJapan
Address: ServerJapan:1666
DepotMap:
  //depot/code-dropS/... //depot/Japan-dev/...
  //depot/France-dev/... //depot/code-dropA/...

フランスの開発者はフェッチとプッシュを米国のサーバに対しても行うため、そのサーバの2番目のリモート仕様は以下のようになります。

RemoteID: ServerUnitedStates
Address: ServerUnitedStates:1666
DepotMap:
  //depot/code-dropS/... //depot/USA-dev/...
  //depot/France-dev/... //depot/code-dropUSA/...