p4 stream
このコマンドは、ストリームインスタンス(ストリーム定義とも言います)の作成や編集を行う場合に使用します。
構文規則
p4 [g-opts] stream [-f] [-d] [-P parent] [-t type] [--parentview inherit|noinherit] [name]
p4 [g-opts] stream [-o [-v]] [-P parent] [-t type] [--parentview inherit|noinherit] [name[@change]]
p4 [g-opts] stream [-f] [-d] name
p4 [g-opts] stream -i [-f]
p4 [g-opts] stream edit
p4 [g-opts] stream parentview [-c changelist# -n -o --source-comments] [--inherit|--noinherit]
p4 [g-opts] stream resolve [-a<flag>] [-n] [-o]
p4 [g-opts] stream revert
説明
p4 stream
コマンドによってHelixサーバストリームを管理することができます。
ストリームとは、変更の構造とフローを制御するためのルールを持つ、
階層構造からなるブランチです。
ストリームの階層 ストリームディポ内にあるストリーム間の親から子への関係のセットです。は、ユーザがストリームに割り当てるタイプによって指定される
ストリームの安定性に基づきます。
メインラインストリーム |
|
開発ストリーム |
|
リリースストリーム |
|
タスクストリーム |
注意
従来のブランチまたはその他のストリームディポからタスクストリームに反映する場合、 ファイルを最初に編集してサブミットしない限り、そのファイルは 親ストリームまではコピーされません。 |
バーチャルストリーム |
|
ストリームの内容は、ユーザがマップするパスによって定義されます。 デフォルトの場合、ストリームの構造は親ストリーム(ブランチ元のストリーム)と 同じになります。ただし、ストリームの構造を変更することにより、指定したファイルが 他のストリームにサブミットされたり反映されたりするのを防ぐことができます。
デフォルトでは、p4 stream
はクライアントワークスペースに関連するストリームを編集します。
ストリームワークスペースを使用していない場合は、エラーをスローします。
詳細については、『Helix Coreコマンドライン(P4)ガイド』の「ストリーム」の章(特に「ストリームビューとパス」を参照してください。
ストリームの編集、衝突解決、復元を行う場合の推奨コマンドについては、『Helix Coreコマンドライン(P4)ガイド』の「ストリームを更新する」を参照してください。
ストリームのプライベート編集機能
パブリック編集したストリーム仕様を保存すると、編集内容が即時に反映されます。ただし、パブリック編集を行うと、他のユーザが行った編集内容に影響する場合があります。例えば、依存関係を変更した場合(製品コンポーネントを変更した場合など)、対応するファイルを正しく変更しないと、製品全体の構造が破損する可能性があります。
リリース2019.1以降でストリームのプライベート編集機能を使用すると、以下の操作が可能になります。
- 特定のストリームを使用している他のユーザに影響しない方法で、そのストリームの仕様とストリームディポ内のファイルを更新する。
- 変更をサブミットする前にその変更のテストを行い、その変更を他のユーザがテストできるように保留する。
- ストリーム仕様の更新履歴の可視性とトラッキング性を高める(単一の不可分なチェンジリストには、ストリーム仕様に対する編集内容とそれに関連するコードの変更内容を保管できるため、こうした可視性とトラッキング性を高めることができます)。
ストリームのプライベート編集用ワークフローは、次のコマンドを使用する標準のワークフローに対応しています: p4 edit、p4 submit、p4 revert、p4 resolve。これらのコマンドで、-So、-Si、または-Sxオプションを使用して、ストリーム仕様の編集を実行したりスキップしたりすることができます。
以下も参照してください。
- 「p4 protect」トピックの「ストリーム仕様の権限」
- コマンド行でp4 help streamcmdsコマンドと
p4 help openablestreamspecs
コマンドを実行した場合の出力情報
ストリームと継承
リリース2020.2以降のp4 stream仕様には、「ParentView:」というフィールドがあります。--parentviewパラメータを仕様して、このフィールドを以下のいずれかの値に設定することができます。
- inherit: この値を設定すると、ストリームの動作が標準的な動作になります。この場合、継承動作が暗黙的に指定されるため、継承されたPathsフィールド、Remappedフィールド値、Ignoredフィールドの値が、子ストリーム仕様内では非表示になります。
- タスクストリームとバーチャルストリームは、常にinheritにする必要があります。
- noinherit: この値を設定すると、Pathsフィールド、Remappedフィールド、Ignoredフィールドが、親ストリームによる影響を受けなくなります。例えば、noinheritになっているリリースストリームのビルドシステムの場合、親メインラインストリームのインポートパスを、そのリリースストリームには存在しない新しいライブラリに切り替えても、そのリリースストリームのビルドシステムは問題なく機能します。
- リリースストリーム、開発ストリーム、メインラインストリームは、inheritにすることもnoinheritにすることもできます。
- メインラインストリームには親ストリームが存在しないため、メインラインストリームを別のタイプのストリームに変換しない限り、inherit設定とnoinherit設定のいずれであっても影響を受けることはありません。
- dm.stream.parentview構成可能変数により、新しく作成されたストリームがinheritとnoinheritのどちらになるかが決まります。
parentviewオプション
p4 streamコマンドには、parentviewというオプションもあります。このオプションを使用して、既存のメインラインストリーム、開発ストリーム、リリースストリームをnoinheritからinheritに変換したり、inheritからnoinheritに変換したりすることができます。
- 子ストリームをnoinheritに変換すると、inheritストリームで暗黙的に指定されているパスが明示的なパスになります。
- --source-commentsオプションを指定すると、子ストリーム仕様内でコメントが表示されます。こうしたコメント行の先頭には「##」が指定されています。以下に例を示します。
exclude myExclude/... ## copy from //stream/main@5
このコメントは、パスのソースが親ストリーム仕様のバージョン5であることを示しています。 - ストリーム仕様に、手動でコメントを追加することもできます。
- --source-commentsオプションを指定すると、子ストリーム仕様内でコメントが表示されます。こうしたコメント行の先頭には「##」が指定されています。以下に例を示します。
- ストリームディポの作成方法とStreamDepthフィールドの設定方法については、p4 depotコマンドの「ストリームディポを使用する」を参照してください。
- ストリームの種類に関する詳しい説明とストリームの使用方法については、『Helix Coreコマンドライン(P4)ガイド』の「ストリーム」の章と「ストリームを更新する」というトピックを参照してください。
2019.1よりも前のリリースの場合
2019.1よりも前のリリースでは、p4 stream editコマンドを使用して、ストリーム仕様のプライベート編集機能を使用することができました。以下に例を示します。
p4 -c aStreamClient stream edit
Stream //Ace/Main@15973 - edit stream spec default change
ただし、この場合は、ストリーム仕様に対する編集内容をチェンジリストで追跡することはできません。p4 stream editコマンドを実行すると、クライアントの現在のストリーム仕様がopened状態になり、ビューの生成に影響するフィールドの編集内容が隔離されます。仕様が作業状態になっている場合、ビューの生成に影響するフィールドに「#open」というコメントが付加されます。これは、それらのフィールドが作業状態になっていて隔離されていることをクライアントに伝えるためのコメントです。これらのフィールドに対する変更内容は、クライアントビューに影響しますが、その他のクライアントには影響しません。p4 edit -Soコマンドは、p4 stream editコマンドと同じ結果になります。
リリース2021.2以降、ストリーム仕様の1対多の(反復)マッピングがサポートされるようになりました。詳細については、「フォームフィールド」と「ストリーム仕様の反復マッピングの例」でimport&
Path:
タイプの説明を参照してください。
ストリームとグラフディポ - .gitサフィックスとリポジトリパス
ストリームではグラフタイプのディポからリポジトリをインポートできます。ストリーム内ではインポートの内容は読み取り専用になります。以下に例を示します。
- .gitサフィックスが必要です
- リポジトリパスには特定のSHA-1またはrefを含める必要があります
@sha |
構文: import path/... //repo/name.git/restricted/view/path/...@sha 例: import d3/... //repo/d3.git/...@c2e37352ac84eb8f90bc2866f715 インポートされたデータは@shaの処理時にロックされます。 |
@ref |
構文: import path/... //repo/name.git/restricted/view/path/...@ref 例: import d3/... //repo/d3.git/...@refs/heads/master または import d3/... //repo/d3.git/...@master 同期すると、@refの現在の時刻にデータが更新されます。 |
「グラフタイプのディポを使用する」を参照してください。
フォームフィールド
フィールド名 | タイプ | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
書き込み可能、入力必須 |
ストリームの名前(永続的な識別子)およびストリームディポでのパスを、
注意
1つのストリームディポ内のすべてのストリーム名に、同じ数のスラッシュが
含まれている必要があります。この数は、管理者がストリームディポ仕様の
Error in stream specification. Stream streamname does not reflect depot depth-field streamdepth. ファイル名とエンティティに関する文字の制限に 注意してください。 |
||||||||
|
読み取り専用 |
ストリーム仕様が最後に変更された日付。 |
||||||||
|
読み取り専用 |
ストリームの仕様が 最後にHelixサーバコマンドによって アクセスされた日時。 |
||||||||
|
書き込み可能、入力必須 |
ストリームを所有しているHelixサーバユーザ またはグループ。 デフォルトは、ストリームを作成したユーザです。 |
||||||||
|
書き込み可能 |
ストリームの名前を表示します。 |
||||||||
|
書き込み可能 |
このストリームの親。ストリームの |
||||||||
|
書き込み可能、入力必須 |
ストリームのタイプによって、想定される変更フローが決定されます。有効なストリームタイプは、
|
||||||||
|
書き込み可能、任意入力 |
ストリームに関する説明。 |
||||||||
|
書き込み可能 |
ストリームの動作を構成する設定を以下に示します。
|
||||||||
ParentView: |
親ストリームからビューを継承するかどうかを指定します。
開発ストリーム、リリースストリーム、またはメインラインストリームを初めて作成すると、 --parentviewパラメータを使用してParentViewフィールドを設定できるようになります。 このパラメータで、「inherit」または「noinherit」という値を設定します。 --parentviewパラメータを指定せずに、開発ストリーム、 リリースストリーム、またはメインラインストリームを作成する場合は、 dm.stream.parentview構成可能変数により、 ParentViewフィールドのデフォルト値が決まります。 ストリームの作成後に、ストリーム仕様を編集してParentViewフィールドの値を 変更することはできません。代わりに、p4 stream parentviewコマンドを使用して、 ストリームのParentViewフィールドの値を変更する必要があります。 詳しくは、p4 help streamcmdsコマンドの出力情報を参照してください。 |
|||||||||
書き込み可能 |
ファイルがどのようにストリーム構造に組み込まれるかを定義します。 以下の形式を使用して、パスを指定します。
ただし、 デフォルトのパスは 有効なパスタイプを以下に示します。
デフォルトでは、ストリームは親ストリームの構造を引き継ぎます (メインラインは親がないため除外)。 パスは子ストリームのビューから引き継がれます。子ストリームのパスでは引き継がれたビューの
ダウングレードは可能ですが、アップグレードすることはできません。
(例えば、子ストリームでは 注意
ヒント
バーチャルストリームでパスをインポートする場合は、ディポパスの引数を明示的に指定して >Stream //project1/mainQ mainline none 'mainQ' Stream //project1/devQ1 development //project1/mainQ 'devQ1' Stream //project1/devQ1-virt virtual //project1/devQ1 'devQ1-virt' バーチャルストリームを除くすべてのストリームで パス: >import foo/... share foo/src/libs/lib1/... バーチャルストリームの
このため、次のようなより明示的な構文を使用することをお勧めします。
注意
類似したファイルタイプをストリーム仕様内で管理するには、以下のように、パス定義の最後のスラッシュ(/)の後ろにワイルドカード(「...」と「*」)を指定することをお勧めします。 share ... isolate BIN/....CLASS isolate BIN/....exe import imports/lib/*.a //depot/3rd_party/lib/*.a import imports/lib/*.dll //depot/3rd_party/lib/*.dll import imports/src/*.h //depot/3rd_party/src/*.h exclude doc/....fm |
|||||||||
|
書き込み可能、任意入力 |
ワークスペースファイルの位置を再割り当てします。 反映元パスとワークスペース内での位置を指定するには、 次の構文を使用します。
「
|
||||||||
|
書き込み可能、任意入力 |
両方で無視するファイル名またはディレクトリ名のリスト。
以下に例を示します。 /tmp # ignores files named "tmp" /tmp/... # ignores directories named "tmp" .tmp # ignores file names ending in .tmp
|
オプション
|
ストリームを削除します(そのストリームのストリーム仕様も削除されます)。 以下の要素によって参照されているストリーム仕様を削除することはできません。
ストリーム仕様を削除する場合、以下のような動作になります。
|
||||||||||||||
|
管理者は |
||||||||||||||
|
ストリーム仕様を標準入力から読み取ります。 |
||||||||||||||
|
ストリーム仕様を標準出力に書き出します。デフォルトでは、
クライアントワークスペースに関連するストリームを出力します。
警告
制限事項: このオプションを使用する場合は、ストリームパスに対するlistアクセス権以上の権限が必要になりますが、プロテクションテーブル内のそれ以外の項目については、マイナス符号(-)を含めてすべて無視されます(通常は、マイナス符号によって操作がブロックされます)。 |
||||||||||||||
|
冗長オプション。このストリーム用に自動生成されたクライアントビューを含めます。 |
||||||||||||||
-c changelist# | @changelist指定子がストリーム名に含まれている場合、 最新(または開いている)バージョンではなく、変更時点の(サブミットされた) ストリームが表示されます。 | ||||||||||||||
|
新しいストリーム仕様を作成する際にストリームの親を指定します。 (このオプションは既存のストリーム仕様には効果がありません) |
||||||||||||||
|
新しいストリーム仕様を作成する際に、
ストリームのタイプを、 |
||||||||||||||
parentview |
メインラインストリーム、開発ストリーム、リリースストリームでp4 stream parentviewコマンドを使用して、 parentviewフィールドの値を「inherit」または「noinherit」に設定することができます。 注意
ワークスペースクライアントのストリーム仕様が作業状態になっている場合、p4 stream parentviewコマンドを使用してparentviewフィールドの値を設定することはできません。 このコマンドを実行するとストリーム仕様が作業状態になるため、 ParentViewフィールドの値を変更することができます。Pathsフィールド、Remappedフィールド、Ignoredフィールドの値を変更することもできます。 ストリーム仕様に対する変更内容は、サブミットするまで パブリックな変更になることはありません。ParentViewの変更をサブミットすると、その変更内容がストリーム仕様の 反映履歴に取り込まれます。
|
||||||||||||||
resolve |
p4 stream resolveは、作業開始以降にストリーム仕様にサブミットされた 変更の衝突を解決します。 新しい変更の衝突が解決されるまで、ストリーム仕様に変更をサブミットすることはできません。 p4 resolve -Soコマンドは、p4 stream resolveコマンドと 同じ結果になります(p4 help editを参照)。
|
||||||||||||||
revert |
p4 stream revertコマンドを実行すると、作業状態の仕様に対する保留中の変更が元に戻ります。これにより、クライアントが、サブミット後の最新バージョンのストリームに戻ります。 p4 revert -Soコマンドは、p4 stream revertコマンドと同じ結果になります。 |
||||||||||||||
|
「グローバルオプション」を参照してください。 |
使用上の注意点
ファイル引数でリビジョン指定子を使用できるか? | ファイル引数でリビジョン範囲を使用できるか? | 最低限必要なアクセスレベル |
---|---|---|
適用外 |
適用外 |
|
タスクストリームは、一時的に使用するためのストリームです。変更を親ストリームに昇格してタスクストリームの使用を終了したら、 そのタスクストリームを削除してください。
例
p4 stream -t mainline //streams/product1 ディポ名と同じストリーム内にメインラインストリームが作成されます。 |
p4 stream -t development -P main //projectX/bruno-dev メインラインをブランチすることにより、プロジェクトX用の開発ストリームを作成します。 |
p4 stream parentview -n --noinherit ParentViewフィールドの値を「noinherit」に設定するときに、変更内容をプレビュー表示します。 |
p4 stream parentview -c 1234 --source-comments --noinherit ストリーム仕様をチェンジリスト1234に関連付け、ストリームをnoinheritに変換し、以下のようなパスのソースに関する自動コメントを取得します。 ## merge from //str/dev2@25 |
ストリーム仕様の反復マッピングの例
ストリーム仕様の反復マッピングを行う場合の例としては、タスクストリーム内でファイルを編集し、複数のプラットフォーム(dirWindows
とdirLinux
)に対する拡張機能を指定する際に、プラットフォームに依存しないサードパーティ製ライブラリ(Lib1
)をread-only
のライブラリとして含めるというケースが考えられます。
>Paths:
share ...
import& dirWindows/Lib1 //other/main/dirA/fileA
import& dirLinux/Lib1 //other/main/dirA/fileA
および
>View: //sroot/child5/... ... &//other/main/dirA/fileA dirWindows/Lib1 &//other/main/dirA/fileA dirLinux/Lib1
関連コマンド
ストリームを一覧表示する |
|
ストリームのテンプレートを編集する | p4 streamspec |
ストリームディポを作成する |