P4Vユーザーガイド (2019.1)

ストリームについて

Helixサーバのストリームは、「属性を持つブランチ」です。コードラインなどの関連性のあるファイルの集合体を一括管理するための手法です。ストリームは関連性のあるファイルの集合体をファイルの操作ルールを定義することにより関連付けます。ファイルの操作には変更をファイル間で伝播することも含まれます。大きな特徴として、ストリームはメインラインモデルを使用して階層的に定義されます。Helixサーバは、厳密に継承されるルールに基づいて、ストリームに関連付けられているワークスペースのビューを生成します。ストリームには、次のようなメリットがあります。

  • 定義された階層全体で、制御された方法によって変更が伝播される。
  • ストリームのビューを定義することによってストリームの内容を設定できるため、そのストリームで作業を行うすべてのユーザに対して一貫した内容のビューを提供できる。
  • 親ストリームからのマージダウン後に親ストリームへのコピーアップが許可されるなど、一部のベストプラクティスが自動的に適用される。

Perforceのバージョン管理システムを初めて使用する場合は、コードラインに関する確実な方針がまだ決まっていなかったり、トリガコードを記述してHelix Coreサーバをカスタマイズするための担当者がいないことが考えられるため、ストリームを使用することをお勧めします。ストリームを使用すると、コードラインの方針とワークスペースに関する管理作業が軽減されます。ストリームグラフには、親ストリームと子ストリームの関係がグラフィック表示されるため、マージが必要かどうかを確認することができます。

メインラインモデル

ソフトウェアコンフィギュレーション管理のメインラインモデルでは、ストリームの内容の安定性に基づいて、最も柔軟な構造(不安定または試験用)から最も堅牢な構造(高品質でリリース可能)までが定義されます。通常、メインラインは極めて安定している必要があり(コードの生成が可能など)、開発コードラインの安定性はより低く、リリースコードラインは最も安定しています。

ストリームビュー

ストリームはタイプだけでなくビューによっても定義されます。ビューによりストリームに含まれるファイルとフォルダ、およびそれらが編集、マージダウン、コピーアップ、または新しいストリームにブランチできるかどうかが指定されます。ストリームビューはワークスペースで使用できるファイルと、これらのファイルを使用して実行できる操作を定義します。また、ストリームビューは親ストリームから子ストリームに継承できるファイルを制限します。例えば、以下のファイルディレクトリを含むメインラインストリームがあるとします。

//Acme/Main
 --apps
 --api
 --resources
 --docs

ここから開発ストリームにブランチします。作業対象はappsフォルダだけですが、apiフォルダとresourcesフォルダのリソースが必要です。appsフォルダにファイルが含まれている開発ストリームをMainの子として作成し、docsフォルダのファイルを除外して、apiフォルダとresourcesフォルダの内容をインポートして使用することができます。ただし、編集したりディポに変更をサブミットしたりすることはできません。これらのルールを持つストリームビューを子ストリームに適用します。Helixサーバは、ストリームビューからワークスペースを生成し、サブミットと反映に関するルールを適用します。この新しいストリームからブランチして作成された子はこれらのルールを継承します。子ストリームではストリームビューの制限を強化することはできますが、緩めることはできません。子ストリームは親ストリームが共有を許容する範囲を超えてブランチすることはできません。

詳細については、「ストリームビューについて」を参照してください。

ストリーム間で変更を伝播する

変更の伝播の主要なメカニズムは、マージダウンコピーアップです。目標は、より安定性が低いストリームに、より安定性の高い親または子の最新状態が保たれるようにすることです。これにより、安定性の低いストリームから高いストリームに変更が伝播される際、作業が上書きされないようにします。この手法により、衝突解決操作をできるだけ単純化できます。Perforceのマージ/コピーと衝突解決の機能は、ストリーム間で変更を伝播する手段となります。ストリームを使用すると、すべての変更が親ストリームと子ストリーム間で伝播されます。同位のストリーム間でマージまたはコピーする場合(別の開発者による変更を自分の開発ストリームにマージする場合など)は、最初にストリームの親を変更する必要があります(つまり、ストリーム仕様を編集して親フィールドを変更します)。この手法はストリームの主な利点であり、変更フローの構成を可能にします。

詳細については、ストリーム間のマージダウンとコピーアップを参照してください。

ストリームディポ

ストリームはストリームディポに保存され、P4Vでは のように表示されます。ストリームを「クラシック」のHelixサーバディポに追加することはできません。ストリームディポは、P4AdminまたはP4コマンドラインクライアントから追加することができます。

詳細情報については、「ストリームをセットアップする」を参照してください。

ストリームのタイプ

Perforceでは標準ストリームタイプに対して軟から硬への安定性モデルを採用しています。

  • ストリームアイコン、メインノード メインラインストリーム: 親が存在しないストリーム。より安定性の高い子ストリームからのマージダウンが予期されます。より安定性の低い子ストリームからのコピーアップが予期されます。ストリーム機構の安定した基幹として使用されます。
  • ストリームアイコン、リリースノード リリースストリーム: 親よりも安定性の高いストリーム。より安定性の高い子ストリームからのマージダウンが予期されます。親ストリームからのコピーアップは予期されません。進行中の安定化作業、バグ修正、リリース保守に役立ちます。
  • ストリームアイコン、devノード 開発ストリーム: 親よりも安定性の低いストリーム。親ストリームからのマージダウンが予期されます。より安定性の低い子ストリームからのコピーアップが予期されます。より安定性の高い子ストリームがあることは予期されません。長期にわたるプロジェクト、主要な新機能に役立ちます。

この他に、特殊な性質を持つストリームタイプが2つあります。

  • ストリームアイコン、タスクノード タスクストリームは軽量で短期間のブランチで、プロジェクトブランチ全体のほんの一部分に影響する作業に使用できます。タスクストリームを使用すると、個人的に作業できるだけでなく、コンテキストをすばやく切り替えたり、Helixサーバによって管理されるメタデータの量を削減することができます。

    詳細情報については、「タスクストリームを使用する」を参照してください。

  • ストリームアイコン、バーチャルノード バーチャルストリームは、実際のストリームの表示内容を制限してワークスペースに表示できます。バーチャルストリームはフィルタの役割を果たします。以下のような場合に役立ちます。

    • 変更をストリームに直接サブミットするが、ストリームビュー内のすべてのファイルをワークスペースと同期したくない。
    • 同じストリームに対して開発するが、複数のプラットフォームの開発などの場合に、インポートするライブラリを切り替える。

詳細については、「バーチャルストリームを使用する」を参照してください。

ストリームグラフのストリーム階層

P4Vの[ストリーム]タブのストリームグラフでは、安定性の低いストリームはメインラインの下、安定性の高いストリームはメインラインの上に表示されます。例えば以下の図は、安定したメインライン、メインラインの下の試験用ストリーム、メインラインの上のリリース品質ストリームで構成されている典型的なソフトウェア開発構造を示しています。

図1。ソフトウェア開発の基本的なストリーム構造

ストリームグラフでは、最も安定しているストリームは最上部、最も安定していないストリームは最下部に表示されます。ストリームグラフにはコードライン間の変更の伝播を制御する親子関係も表示されます。すべてのストリームはメインラインの子であり、すべての子は同じタイプの子の親になることができます。これにより、特定の開発コードラインおよびリリースコードラインの作成が可能になり、またコードライン間の変更の伝播を適切に行うことができます。ストリームグラフでは変更の伝播が矢印のコネクタで表されます。

詳細については、「ストリームグラフを使用する」を参照してください。

コマンドラインクライアントとP4Vの用語の違い

P4V用語 コマンドライン用語 説明
ストリームのルート ストリーム ストリーム内のファイルが保存されるディポの最上位レベルディレクトリ。
ストリーム 名前 ユーザが割り当てるわかりやすい名前。ストリームグラフ内のストリームのラベルとして表示されます。