分散バージョニング環境におけるHelix Coreサーバの利用 (2019.1)

集中アーキテクチャと分散アーキテクチャ

分散バージョン管理環境で作業を開始する前に、分散バージョン管理アーキテクチャや、このアーキテクチャ内でサーバを相互に関連付ける方法など、基本的な概念を理解しておく必要があります。

バージョン管理システムの集中モデルと分散モデルの実装方法については、『ソリューション概要: Helixバージョンコントロールシステム』を参照してください。Helixサーバではこれらの両方のモデルをサポートしているほか、これらのハイブリッドモデルもサポートしています。

集中モデルの場合、ユーザは共有サーバと直接通信します。つまり、共有サーバからファイルをチェックアウトし、これらのファイルで作業を行い、共有サーバにチェックインします。

次の図は集中モデルを示しています。

集中モデル
注意

クライアントは、ユーザが通信するプログラム(Helixサーバコマンドラインクライアント、P4VP4Connectなど)です。一方、クライアントはサーバと相互に通信します。

図が示すように、一部のクライアントは共有サーバに保存されているファイルのサブセットにアクセスし、一部のユーザはサーバに保存されているすべてのファイルにアクセスします。

分散モデルの場合、ユーザはローカルマシンで実行されているサーバから、ファイル(およびこれらのファイルの変更)がアーカイブされているリポジトリにアクセスします。これは、ファイルの履歴がすべて各ユーザのマシンに保管されることを意味します。必要な場合を除き、ユーザは他のHelix Coreサーバ (Helixサーバまたはp4dとも呼ばれます)と通信したり、ネットワークに接続したりする必要なく、バージョン管理されたコンテンツを管理できます。ユーザは履歴をリライトまたは改訂することで、不要な中間情報を破棄することもできます。分散モデルの場合、ユーザは他のユーザの作業を中断したりネットワークに接続したりする必要なく、実験的な作業を行うことも、変更を試して新しいストリームをブランチすることもできます。

次の図は分散モデルを示しています。

分散モデル

分散モデルの場合、ユーザは他のユーザが使用できるようにコンテンツを共有サーバにコピーするまで、ネットワークに接続されていない自身のサーバ上で作業を行うことができます。

また、Gitのような他のバージョン管理システムと異なり、ユーザは共有サーバのリポジトリ全体をコピーする代わりに、共有サーバのコンテンツのサブセットを、自身のマシンのサーバ上にコピーできます。

このモデルの場合、ユーザは変更を自身の個人サーバにサブミットした後、変更を共有サーバにプッシュします。他のユーザは、これらの変更(コピー)を共有サーバから自身の個人サーバにフェッチできます。

以下の図では、各ユーザはファイルのサブセットをフェッチしています。左側のユーザは青いファイルのみ、右側のユーザはオレンジ色のファイルのみをフェッチしています。各クライアントは個々の個人サーバに変更をサブミットした後、共有サーバに変更をプッシュしたり、共有サーバから変更をフェッチしたりします。

サブセット

分散バージョン管理モデルは、クライアントとサーバ間において集中モデルと分散モデルの両方の操作性を提供するハイブリッドワークフローも提供します。ハイブリッドワークフローの場合、ユーザは自身のサーバを共有サーバに接続することにより、お互いの作業を共有できると同時に、各サーバを中断することなく、共有サーバと直接通信できます。

次の図はハイブリッド設定を示しています。

ハイブリッドモデル

また、Helixサーバ分散バージョン管理環境では、複数のオフィスまたはチーム間でコンテンツを同期できます。サーバがネットワークに接続されている場合はp4 fetchおよびp4 pushコマンドを使用し、接続されていない場合はp4 zipおよびp4 unzipコマンドを使用します。サイト間でコンテンツを同期する方法については、Helix Coreサーバ管理者ガイド: 基本の「分散開発を管理する」セクションを参照してください。