P4Vユーザーガイド (2019.1)

バーチャルストリームを使用する

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

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

例えば、使用している開発ストリームのビューにhelpディレクトリ内のすべてのファイルが含まれているとします。

バーチャルストリームのファイルツリー

p4adminフォルダ内の内容のみが作業に必要な場合は、helpディレクトリ内のすべてのファイルをワークスペースと同期したくないことがあります。開発ストリームのワークスペースビューを変更して不要なフォルダを除外することはできません。ワークスペースビューはストリームに依存するためです。不要なファイルを除外した開発ストリームの子を作成することはできますが、この場合、変更を開発ストリームに直接サブミットできなくなります。サブミットするたびにマージダウン/コピーアップ操作を追加で実行しなければなりません。代わりに、p4adminフォルダのみが含まれているバーチャルストリームを開発ストリームの子として作成します。

  1. ストリームエディタで、バーチャルのストリームタイプを選択します。
  2. [パス]フィールドに、p4adminフォルダのみが含まれているストリームパスを入力します。

    exclude ...
    share doc/help/p4admin/...

これにより、目的のワークスペースビューが含まれているバーチャルストリームが作成されます。

//P4V/doc-dev/doc/help/p4admin/... doc/help/p4admin/...

バーチャルストリームに変更をサブミットすると、これらの変更が親の開発ストリームに直接サブミットされます。

バーチャルストリームを表示する

ストリームグラフでは、バーチャルストリームが点線の枠線で表示されます。ベースの親ストリームとの関係は灰色の線で表示され、マージ/コピーインジケーターは表示されません。マシンのバーチャルの子はメインラインの横に表示されます。その他のすべてのバーチャルストリームは、親が開発ストリームかリリースストリームかに応じて、ベースの親の上または下に表示されます。

ストリームグラフではバーチャルストリームにマージ/コピーインジケーターが表示されません。バーチャルストリームのベースの親にはマージ/コピーインジケーターが表示されます。事実上のマージ/コピーフローは、実際のストリーム間で行われるためです。バーチャルストリーム経由で変更をサブミットする場合、バーチャルストリームのベースの親と、マージダウンまたはコピーアップが必要な実際のストリームとの間に、コピーアップ/マージダウン矢印が表示されます。例えば、admin-authバーチャルストリームを介して変更をmainにサブミットした場合、mainストリームとその実際の子との間にマージ矢印が表示されます。

サブミット時のバーチャルストリームグラフ

バーチャルストリームのストリームパスの動作

バーチャルストリームを定義するには、実際のストリームを定義する場合と同様にストリームパスを使用します。ただし、パスタイプの動作は異なります。具体的には、isolateimportは、バーチャルストリームのコンテキスト内のshareと同じように動作します。そのため、バーチャルストリームビューを定義すると、動作が冗長になる場合があります。

  • share: 実際のストリームでは、shareパス内に含まれているファイルのマージ、コピー、ブランチ、同期(取得)、ディポへのサブミットを行うことができます。バーチャルストリームでは、shareパスに含まれているファイルのサブミット、マージ、コピー、ブランチを行うことはできません。定義により、バーチャルストリームではこのような操作が許可されていないためです(サブミット、ブランチ、マージ、コピーは、バーチャルストリームの実際の親を経由して実行されます)。
  • isolate: 実際のストリームでは、isolateパスに含まれているファイルをワークスペースと同期してディポにサブミットすることができます。ブランチ、マージ、コピーを行うことはできません。バーチャルストリームでは、isolateは基本的にshareと同じように機能します。定義により、バーチャルストリームでは、サブミット、ブランチ、マージ、コピーが許可されていないためです。ただし、バーチャルストリームの作成時にisolateを使用する意味がないわけではありません。バーチャルストリームから実際の子を作成する場合、実際の子ストリームのisolateパス内のファイルは、isolateの動作に従って動作します。
  • import: 実際のストリームでは、importパスに含まれているファイルを同期することができます。マージ、コピー、ブランチ、サブミットを行うことはできません。importパスが実際の親からインポートされている場合、バーチャルストリーム内のimportは、shareと同じように動作します。ただし、明示的なディポパスを別の場所からインポートした場合は、通常のimportの動作になります。

    例えば、親ストリーム//Acme/Mainに以下のファイルディレクトリが含まれているとします。

    //Acme/Main/lib

    バーチャルストリームを//Acme/Mainの子として定義した場合、以下のimportパスはshareと同じように動作するため、冗長になります。

    share ...
         import lib/...

    バーチャルストリームから実際の子を作成しない場合、importパスは必要ありません。ただし、明示的なディポの場所からバーチャルストリームにライブラリをインポートする場合は、importパスが必要になります。このパスは、実際のストリームの場合と同様に機能します。

    share ...
         import lib/... //Red/R6.1/stuff/...
  • Exclude: 常に実際のストリームで動作する場合と同様に動作します。

ストリームパスの詳細情報については、Helix Coreサーバユーザーガイドの「ストリーム」の章の「ストリームパス」セクションを参照してください。

バーチャルストリームを作成する

バーチャルストリームは、任意のストリームタイプ(メイン、開発、リリース、別のバーチャルストリーム)の子として作成することができます。バーチャルストリームの動作はその親ストリームタイプの動作に準拠します(つまり、メインストリームの子として作成されたバーチャルストリームはメインストリームと同じように動作し、開発ストリームの子として作成されたバーチャルストリームは開発ストリームと同じように動作します)。

  1. [ストリームグラフ]でストリームを右クリックし、['<stream name>'から新しいストリームを作成...]を選択します。
  2. [ストリーム]ダイアログの[基本設定]タブで、[バーチャル - 範囲を狭めて親に直接サブミットするために使用][ストリームタイプ]を選択します。
  3. [ストリーム]ダイアログの[詳細]タブで、バーチャルストリームの範囲を定義するストリームパスを入力します。
  4. 他のストリームと同様にストリーム設定を完了します。
  5. [OK]をクリックします。
Note

バーチャルストリームを任意のストリームタイプの子として作成できるのと同様に、実際のストリームをバーチャルストリームの子として作成できます。

[ストリーム]ダイアログを使用してストリームを作成または編集する方法の詳細情報は、ストリームの作成を参照してください。

バーチャルストリームに変更をサブミットする

バーチャルストリームに変更をサブミットする場合は、実際のストリームに変更をサブミットする場合と同様に操作を行います。ただし、実際には、バーチャルストリームのベースの親に変更がサブミットされます。

バーチャルストリームにマージまたはコピーする

バーチャルストリームに変更をマージダウンまたはコピーアップする場合は、実際のストリームに変更をマージダウンまたはコピーアップする場合と同様に操作を行います。ただし、実際には、バーチャルストリームのベースの親にマージまたはコピーがサブミットされます。実際のストリーム間でコピーやマージを直接行う方が操作しやすい場合があります。