フェッチとプッシュを使用した分散開発
次のセクションでは、分散型サイトの間でp4
fetch
とp4 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」を参照してください)。
以降このサイクルが繰り返されます。
このシナリオは下の図のように表すことができます。
次のセクションでは、このシナリオを実施するために必要なリモートの仕様の設定方法を説明します。
リモート仕様を構成する
p4 push
とp4
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/...