バーチャルストリームを使用する
バーチャルストリームは、実際のストリームの表示内容を制限してワークスペースビューに表示できます。バーチャルストリームはフィルターの役割を果たします。以下のような場合に役立ちます。
-
変更をストリームに直接サブミットするが、ストリームビュー内のすべてのファイルをワークスペースと同期したくない。
-
同じストリームに対して開発するが、複数のプラットフォームの開発などの場合に、インポートするライブラリを切り替える。
たとえば、使用している開発ストリームにappsディレクトリ内のすべてのファイルが含まれているとします。
p4adminフォルダ内の内容のみが必要な場合は、appsディレクトリ内のすべてのファイルをワークスペースと同期したくないことがあります。開発ストリームのワークスペースビューを変更して不要なフォルダを除外することはできません。ワークスペースビューはストリームに依存するためです。不要なファイルを除外した開発ストリームの子を作成することはできますが、この場合、変更を開発ストリームに直接サブミットできなくなります。サブミットするたびにマージダウン/コピーアップ操作を追加で実行しなければなりません。代わりに、p4adminフォルダのみが含まれているバーチャルストリームを開発ストリームの子として作成します。
これにより、目的のワークスペースビューが含まれているバーチャルストリームが作成されます。
//depot/development/p4-qt/apps/p4admin/... p4-qt/apps/p4admin/...
バーチャルストリームに変更をサブミットすると、これらの変更が親の開発ストリームに直接サブミットされます。
バーチャルストリームを表示する
ストリームグラフでは、バーチャルストリームが点線の枠線で表示されます。ベースの親ストリームとの関係は灰色の線で表示され、マージ/コピーインジケーターは表示されません。マシンのバーチャルの子はメインラインの横に表示されます。その他のすべてのバーチャルストリームは、親が開発ストリームかリリースストリームかに応じて、ベースの親の上または下に表示されます。
ストリームグラフではバーチャルストリームにマージ/コピーインジケーターが表示されません。バーチャルストリームのベースの親にはマージ/コピーインジケーターが表示されます。事実上のマージ/コピーフローは、実際のストリーム間で行われるためです。バーチャルストリームを介して変更をサブミットする場合、バーチャルストリームのベースの親と、マージダウンまたはコピーアップが必要な実際のストリームとの間には、コピーアップ/マージダウン矢印が表示されます。たとえば、admin-authバーチャルストリームを介して変更をmainにサブミットした場合、mainストリームとその実際の子との間にマージ矢印が表示されます。
バーチャルストリームのストリームパスの動作
バーチャルストリームを定義するには、実際のストリームを定義する場合と同様にストリームパスを使用します。ただし、パスタイプの動作は異なります。特に、isolate
とimport
は、バーチャルストリームのコンテキスト内の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: 常に実際のストリームで動作する場合と同様に動作します。
ストリームパスの詳細情報は、ストリームビューについてを参照してください。
バーチャルストリームを作成する
バーチャルストリームは任意のストリームタイプ(メイン、開発、リリース、別のバーチャルストリーム)の子として作成できます。バーチャルストリームの動作はその親ストリームタイプの動作に準拠します(つまり、メインストリームの子として作成されたバーチャルストリームはメインストリームと同じように動作し、開発ストリームの子として作成されたバーチャルストリームは開発ストリームと同じように動作します)。
-
[ストリームグラフ]でストリームをコンテキストクリックし、['
<stream name>'
から新しいストリームを作成...]を選択します。 -
[ストリーム]ダイアログの[基本設定]タブで、[バーチャル - 範囲を狭めて親に直接サブミットするために使用]の[ストリームタイプ]を選択します。
-
[ストリーム]ダイアログの[詳細]タブで、バーチャルストリームの範囲を定義するストリームパスを入力します。
-
他のストリームと同様にストリーム設定を完了します。
-
[OK]をクリックします。
注意
バーチャルストリームを任意のストリームタイプの子として作成できるのと同様に、実際のストリームをバーチャルストリームの子として作成できます。
[ストリーム]ダイアログを使用してストリームを作成または編集する方法の詳細情報は、ストリームの作成を参照してください。
バーチャルストリームに変更をサブミットする
バーチャルストリームに変更をサブミットする際は、実際のストリームに変更をサブミットする場合と同様に行います。ただし、変更は実際にはバーチャルストリームのベースの親にサブミットされます。
バーチャルストリームにマージまたはコピーする
バーチャルストリームに変更をマージダウンまたはコピーアップする際は、実際のストリームに変更をマージダウンまたはコピーアップする場合と同様に行います。ただし、マージまたはコピーは実際にはバーチャルストリームのベースの親にサブミットされます。実際のストリーム間でコピーやマージを直接行う方が操作しやすい場合があります。