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

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

  • 変更をストリームに直接サブミットするが、ストリームビュー内のすべてのファイルをワークスペースと同期したくない。

  • 同じストリームに対して開発するが、複数のプラットフォームの開発などの場合に、インポートするライブラリを切り替える。

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

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

  1. ストリームエディタで、バーチャルのストリームタイプを選択します。

  2. [パス]フィールドに、p4adminフォルダのみが含まれているストリームパスを入力します。

    exclude ...
    share p4-qt/apps/p4admin/...

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

//depot/development/p4-qt/apps/p4admin/... p4-qt/apps/p4admin/...

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

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

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

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

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

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

  • share: 実際のストリームでは、shareパス内に含まれているファイルは、マージ、コピー、ブランチ、同期(取得)、およびディポへのサブミットが可能です。バーチャルストリームでは、shareパスに含まれているファイルは、サブミット、マージ、コピー、ブランチすることはできません。定義により、バーチャルストリームではこのような操作が許可されないためです(サブミット、ブランチ、マージ、コピーはバーチャルストリームの実際の親を介して行われます)。

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

  • import: 実際のストリームでは、importパスに含まれているファイルは同期できますが、マージ、コピー、ブランチ、サブミットすることはできません。バーチャルストリームでは、importパスが実際の親からインポートされている場合、importshareと同じように動作します。ただし、明示的なディポパスを別の場所からインポートしている場合は、通常のimportの動作になります。

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

    //Acme/Main/lib

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

    share ... 
         import lib/... 

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

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

ストリームパスの詳細情報は、ストリームビューについてを参照してください。

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

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

  1. [ストリームグラフ]でストリームをコンテキストクリックし、['<stream name>'から新しいストリームを作成...]を選択します。

  2. [ストリーム]ダイアログの[基本設定]タブで、[バーチャル - 範囲を狭めて親に直接サブミットするために使用][ストリームタイプ]を選択します。

  3. [ストリーム]ダイアログの[詳細]タブで、バーチャルストリームの範囲を定義するストリームパスを入力します。

  4. 他のストリームと同様にストリーム設定を完了します。

  5. [OK]をクリックします。

注意

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

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

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

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

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

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