集中アーキテクチャと分散アーキテクチャ
バージョン管理システムでは、集中モデルと分散モデルのいずれかを実装することができます (『ソリューションの概要: Helix Coreバージョン管理システム』を参照)。 Helixサーバではこれらの両方のモデルをサポートしているほか、 これらのハイブリッドモデルもサポートしています。
集中モデルの場合、ユーザは共有サーバと直接通信します。 つまり、共有サーバからファイルをチェックアウトし、 これらのファイルで作業を行い、共有サーバにチェックインします。
クライアントとは、ユーザとシステムを仲介するプログラムのことです (Helixサーバ のコマンドラインクライアント、 P4V、 P4Connectなど)。クライアントとサーバは、 相互に通信することができます。
共有サーバに保存されているファイルのサブセットにアクセスするクライアントもあれば、 共有サーバに保存されているすべてのファイルにアクセスするクライアントもあります。
分散モデル:サーバ間または個人サーバとして
分散モデルは、サーバ間または個人サーバとして利用することができます。
サーバ間の使用例
管理者の中には、Helix Core分散モデルを使用して複数のHelix Coreサーバ間でデータを移動したり、2台のHelix Coreサーバ間でコードを共有したりすることが便利であると考えている人もいます。
このような使用例を可能にするには、
-
それぞれのHelix Coreサーバで、必要なレベルのプッシュとフェッチを許可するように構成します。詳しくは、『Helix Coreコマンドライン(P4)リファレンス』の「server.allowfetch」および「server.allowpush」を参照してください。
-
サーバ間のファイルのマッピングを含むリモート仕様を作成します。『Helix Coreサーバ管理者ガイド』の「フェッチとプッシュを使用した分散開発」を参照してください。
個人サーバ
典型的な個人サーバの使用例には、共有サーバからp4 cloneを実行して、ユーザ自身の個人サーバを作成することが含まれます。これにより、そのユーザはp4 pushとp4 fetchを実行して、共有サーバと個人サーバ間で変更内容を同期することができます。
分散モデルの場合、ユーザはローカルマシンで実行されているサーバから、
ファイル(およびこれらのファイルの変更)がアーカイブされている
リポジトリにアクセスします。これは、ファイルの履歴がすべて
各ユーザのマシンに保管されることを意味します。ユーザは他の
Helix Coreサーバ (Helixサーバまたはp4d
とも呼ばれます)と通信したり、ネットワークに接続したりすることなく、バージョン化されたコンテンツを管理することができます。ユーザは履歴をリライトまたは改訂することで、
不要な中間情報を破棄することもできます。分散モデルの場合、
ユーザは他のユーザの作業を中断したりネットワークに接続したりする必要なく、
実験的な作業を行うことも、変更を試して
新しいストリームをブランチすることもできます。
分散モデル:
分散モデルの場合、コンテンツを共有サーバにコピーする準備ができるまで、自分のサーバ上で作業を行うことができます。 共有サーバにコピーされたコンテンツは、他のユーザも使用することができます。
Gitなどのバージョン管理システムとは異なり、 共有サーバのリポジトリ全体をコピーするのではなく、共有サーバ上のコンテンツのサブセットのみを、 自分のマシンのサーバにコピーすることができます。
このモデルの場合、最初に変更内容を自分の個人サーバにサブミットしてから、 その変更内容を共有サーバにプッシュすることになります。他のユーザは、これらの変更内容を共有サーバからフェッチして、 自分の個人サーバにコピーすることができます。
各クライアントは個々の個人サーバに変更内容をサブミットしてから、 共有サーバに変更内容をプッシュしたり、 共有サーバから変更内容をフェッチしたりします。ファイルのサブセットのプッシュとフェッチが実行される分散モデルの例を以下に示します。
分散モデルでは、クライアントとサーバ間における 集中モデルと分散モデルの両方の操作性を持つ ハイブリッドワークフローもサポートされています。ハイブリッドワークフローの場合、 自分の個人サーバを共有サーバに接続することにより、自分の作業内容を他のユーザと共有したり、 共有サーバと直接通信したりできるようになります。ハイブリッド構成の例を以下に示します。
また、
Helixサーバ
分散バージョン管理環境では、
複数のオフィスまたはチーム間でコンテンツを同期できます。サーバがネットワークに接続されている場合は
p4 fetch
およびp4 push
コマンドを使用し、
接続されていない場合は
p4 zip
およびp4 unzip
コマンドを使用します。詳細については、『Helix Coreサーバ管理者ガイド』の
「分散開発を管理する」
を参照してください。