Helix Core P4コマンドリファレンス (2019.1)

p4 stream

ストリーム仕様を作成、編集、または削除します。

構文

p4 [g-opts] stream [-P parent] -t typename 部分名
p4 [g-opts] stream [-f -d] [-o [-v]] [-P parent] -t typename [name[@change]]
p4 [g-opts] stream -i [-f] 部分名
p4 [g-opts] stream edit
p4 [g-opts] stream resolve [-a flag] [-n] [-o]
p4 [g-opts] stream revert

説明

p4 streamコマンドによってHelixサーバストリームを管理することができます。ストリームとは、変更の構造とフローを制御するための戦略を持つ、階層構造からなるブランチです。 ストリームの階層は、ユーザがストリームに割り当てるタイプによって指定されるストリームの安定性に基づきます。

メインライン
  • 比較的安定性が高い
  • ストリームディポ内のすべてのストリームの親
開発
  • 最も安定性が低い(最も変化しやすい)
  • フローが制御される
リリース
  • 安定性が高い
  • フローが制御される
タスク
  • 編集後のファイルをリポジトリに昇格させるための、一時的な軽量ストリーム
  • ブランチ後のファイルと反映後のファイルは、シャドウテーブルに保管されます。このシャドウテーブルは、タスクストリームを削除またはアンロードすると、システム上から削除されます
バーチャル
  • ローカルデータを保存せずに親ストリームと子ストリームの間でコピーおよびマージを行う
  • 実際のストリームではなく親ストリームの代替ビュー

ストリームの内容は、ユーザがマップするパスによって定義されます。 デフォルトの場合、ストリームの構造は親ストリーム(ブランチ元のストリーム)と同じになります。 ただし、ストリームの構造は上書きすることができます。 例えば、構造を上書きすることにより、指定したファイルが他のストリームにサブミットまたは反映されるのを防ぐことができます。

デフォルトでは、p4 streamはクライアントワークスペースに関連するストリームを編集します。 ストリームワークスペースを使用していない場合は、エラーをスローします。 詳細については、『Helix Coreサーバユーザーガイド』の「ストリーム」の章を参照してください。

ストリームの編集、衝突解決、復元を行う場合の推奨コマンドについては、『Helix Coreサーバユーザーガイド』の「ストリームを更新する」を参照してください。

注意

従来のブランチまたはその他のストリームディポからタスクストリームに反映する場合、ファイルを最初に編集してサブミットしない限り、そのファイルは親ストリームまではコピーされません。

ストリームについて詳しくは、『Helix Coreサーバユーザーガイド』の「ストリーム」の章を参照してください。

ストリームのプライベート編集機能

パブリック編集したストリーム仕様を保存すると、編集内容が即時に反映されます。 ただし、パブリック編集を行うと、他のユーザが行った編集内容に影響する場合があります。 例えば、依存関係を変更した場合(製品コンポーネントを変更した場合など)、製品全体の構造が破損する可能性があります。

ストリームのプライベート編集機能を使用すると、以下の操作が可能になります。

  • 特定のストリームを使用している他のユーザに影響しない方法で、そのストリームの仕様とストリームディポ内のファイルを更新する。
  • 変更をサブミットする前にその変更のテストを行い、その変更を他のユーザがテストできるように保留する。
  • ストリーム仕様の更新履歴の可視性とトラッキング性を高める(単一の不可分なチェンジリストには、ストリーム仕様に対する編集内容とそれに関連するコードの変更内容を保管できるため、こうした可視性とトラッキング性を高めることができます)。

以前のリリースでは、p4 stream editコマンドを使用してストリーム仕様のプライベート編集機能を使用することができましたが、このリリースでもこの機能はサポートされています。 以下に例を示します。
p4 -c aStreamClient stream edit
Stream //Ace/Main@15973 - edit stream spec default change

ただし、p4 stream editコマンドを使用すると、ストリーム仕様に対する編集内容をチェンジリストで追跡できなくなります。
ストリームのプライベート編集のワークフローは、p4 editp4 submitp4 revertp4 resolveコマンドを使用する標準のワークフローに対応しています。 これらのコマンドで、-So-Si-Sxオプションを使用して、ストリーム仕様の編集を実行したりスキップしたりすることができます。

p4 help streamcmdsコマンドを実行した場合の出力行も確認してください。

ヒント

ストリームとグラフディポ

ストリームではグラフタイプのディポからリポジトリをインポートできます。 ストリーム内ではインポートの内容は読み取り専用になります。 以下に例を示します。

  • .gitサフィックスが必要です
  • リポジトリパスには特定のSHA-1またはrefを含める必要があります
@sha

構文:

import path/... //repo/name.git/restricted/view/path/...@sha

例:

import d3/... //repo/d3.git/*.js@c2e37352ac84eb8f90bc2866f715

インポートされたデータは@shaの処理時にロックされます。

@ref

構文:

import path/... //repo/name.git/restricted/view/path/...@ref

例:

import d3/... //repo/d3@refs/heads/master

同期すると、@refの現在の時刻にデータが更新されます。

詳細については、「グラフタイプのディポを使用する」を参照してください。

フォームフィールド

フィールド名 タイプ 説明

Stream:

書き込み可能、入力必須

ストリームの名前(永続的な識別子)およびストリームディポでのパスを、//depotname/streamnameの形式で指定します。

ファイル名およびエンティティに関する文字の制限に注意してください。

Update:

読み取り専用

ストリーム仕様が最後に変更された日付。

Access:

読み取り専用

ストリームの仕様が最後にHelixサーバコマンドによってアクセスされた日時。

Owner:

書き込み可能、入力必須

ストリームを所有しているHelixサーバユーザまたはグループ。 デフォルトは、ストリームを作成したユーザです。

Name:

書き込み可能

ストリームの名前を表示します。 Stream:フィールドとは異なり、このフィールドは変更可能です。 デフォルト値はストリームパスのstreamname部分です。

Parent:

書き込み可能

このストリームの親。 ストリームのType:mainlineの場合はnoneにし、それ以外の場合は//depotname/streamnameの形式で既存のストリーム識別子に設定しなければなりません。

Type:

書き込み可能、入力必須

ストリームのタイプによって、想定される変更フローが決定されます。 有効なストリームタイプは、mainlinedevelopmentreleasevirtualtaskです。

  • mainline

    メインラインストリームはストリームディポ内のすべてのストリームの親です。 あらゆるストリームディポには少なくとも1つのメインラインストリームが存在しなければなりません。

  • virtual

    バーチャルストリームを使用すると、ローカルデータを保存せずに親ストリームと子ストリームの間でマージおよびコピーを行うことができます。 データはバーチャルストリームのビューに定義されているファイル範囲に関する制約を適用した後に、コピー/マージ先(バーチャルストリーム以外)に送られます。

    バーチャルストリームはディポのネームスペースにファイルを持たないため、バーチャルストリームをインポートすることはできません。

  • release

    メインラインよりも安定性の高いストリームです。 リリースストリームは親からコピーされ、親へとマージされます。

  • development

    メインラインよりも安定性の低いストリームです。 開発ストリームは、親ストリームからマージされ、親へとコピーされることが想定されます。

    注意

    デフォルトのストリームタイプはdevelopmentです。

  • task

    タスクストリームは軽量の短期的なブランチであり、バグ修正や、ブランチデータのほんの一部しか修正しない新機能の使用に役立ちます。

    リポジトリのメタデータを最小限に抑えるには、シャドウテーブルは、分岐(コピー)ファイルのみを追跡させます。 タスクストリームを削除またはアンロードされると、シャドウテーブルが削除されます。

    注意

    タスクストリームに関連付けられたワークスペースではすべてのブランチ済ファイルを参照できますが、ストリームの名前空間へのアクセス権があるユーザには、変更されたか昇格したファイルのみが可視となります。

    たとえば、タスクのストリームに関連付けられていないワークスペースから、タスクストリームのチェンジリストのためにp4 describeを実行する場合、サブミットしたファイルのサブセットのみが表示されます。

    ヒント

    タスクストリームでimport+パスにファイルをサブミットすることはできません。 import+ view_path [depot_path]でパスタイプの説明を参照してください。

Description:

書き込み可能、任意入力

ストリームに関する説明。

Options:

書き込み可能

ストリームの動作を構成する設定を以下に示します。

  • [un]locked

    他のユーザによるストリームの編集または削除を有効/無効にします。 ロックされている場合、ストリーム仕様は削除できず、所有者のみが変更可能です。 デフォルト値はunlockedです。

  • [all|owner]submit

    ストリームの変更のサブミットを、すべてのユーザに許可するか、所有者にのみ許可するかを指定します。 デフォルト値はallsubmitです。 ownersubmitがマークされたストリームのOwner:がグループである場合、そのグループのメンバーであるすべてのユーザが変更をストリームにサブミットできます。

  • [no]toparent

    当該ストリームからその親への反映が想定されるかどうかを指定します。 デフォルト値はtoparentです。

  • [no]fromparent

    親から当該ストリームへの反映が想定されるかどうかを指定します。 デフォルト値は、メインラインおよび開発ストリームはfromparent、リリースストリームはnofromparentです。

  • mergeany | mergedown

    マージフローの制限、または他のストリームからのマージの許可を設定します。 例えば、mergeanyオプションは、警告なく子から親へのマージを可能にします。

virtualタイプのストリームには、フローオプションとしてnotoparentおよびnofromparentを設定する必要があります。

mainlineタイプのストリームでは、フローオプションは無視されます。

Paths:

書き込み可能

ファイルがどのようにストリーム構造に組み込まれるかを定義します。 以下の形式を使用して、パスを指定します。

path_type view_path [depot_path]

ただし、path_typeは単一のキーワード、view_pathは頭にスラッシュが付かないファイルパスです。任意指定のdepot_path//で始まるファイルパスです。

デフォルトのパスは次のとおりです: share ...

有効なパスタイプを以下に示します。

  • share view_path

    指定されたファイルは、親ストリームからのまたは親ストリームへの同期、サブミット、反映が可能です。

  • isolate view_path

    指定されたファイルは、親ストリームからのまたは親ストリームへの同期およびサブミットが可能ですが、反映は実行できません。

  • import view_path [depot_path]

    指定されたファイルは、親ストリームからのまたは親ストリームへの同期が可能ですが、サブミットまたは反映は実行できません。 view_pathは親ストリームのビューにマッピングされるか、(任意指定の)depot_pathにマッピングされます。

    depot_pathにはチェンジリスト指定子が含まれる場合があります。 ストリームに関連付けられたクライアントワークスペースには、このディポパス内の変更のリビジョンまたはそれ以下のリビジョンのみが表示されます。 例えば、ディポパスに//depot/import/...@1000を指定すると、1000より大きいチェンジリストのリビジョンは、ほとんどのコマンドで非表示になります。

    注意

    チェンジリスト番号の代わりに、自動ラベル定義を使用できます。

    特定のストリームワークスペースのチェンジリストの制限内容は、ChangeViewと呼ばれる読み取り専用のクライアントワークスペース仕様フィールドで表示されます。

  • import+ view_path [depot_path]

    標準のimportパスと同じように機能します。ストリームディポ外からストリームへのパスのマッピングを可能にしますが、標準のimportパスと異なり、import+パス内のファイルに変更をサブミットできます。

  • exclude view_path

    指定されたファイルは、親ストリームからのまたは親ストリームへの同期、サブミットまたは反映を実行できません。

デフォルトでは、ストリームは親ストリームの構造を引き継ぎます(メインラインは親がないため除外)。

パスは子ストリームのビューから引き継がれます。 子ストリームのパスでは引き継がれたビューのダウングレードは可能ですが、アップグレードすることはできません。 (例えば、子ストリームではsharedパスをisolatedパスにダウングレードできますが、親ストリームでパスがisolatedとして定義されている場合、子ストリームでパスをsharedに指定してフルアクセスに戻すことはできません。)

depot_pathpath_typeimportまたはimport+である場合にのみ機能することに注意してください。

ヒント

バーチャルストリームでパスをインポートする場合は、ディポパスの引数を明示的に指定してimport view-pathを実行する必要があります。 例えば、次のストリームセットを作成するとします。

Stream //stest/mainQ mainline none 'mainQ'
Stream //stest/devQ1 development //stest/mainQ 'devQ1'
Stream //stest/devQ1-virt virtual //stest/devQ1 'devQ1-virt'

バーチャルストリームを除き、すべてのストリームには次のパスを指定してPaths: share ... を実行します。

パス:

import inca/...
share inca/src/libs/rtslib/...

バーチャルストリームのincaパスには親のパス//stest/devQ1が引き継がれず、クライアントビューには次のように表示されます。

//stest/mainQ/inca/... inca/...

このため、次のようなより明示的な構文を使用することをお勧めします。

import inca/... //stest/devQ1/inca/...

注意

ストリーム仕様で類似したファイルタイプのファイルを管理するには、パス定義の最後のスラッシュに続けてワイルドカード(...および*)を明示的に使用します。

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

Remapped:

書き込み可能、任意入力

ワークスペースファイルの位置を再割り当てします。 反映元パスとワークスペース内での位置を指定するには、次の構文を使用します。

view_path_1 view_path_2

view_path_1」と「view_path_2」は、Helixサーバのビューパスです(パスの先頭にスラッシュとワイルドカードを指定しないでください。また、ワイルドカードをパスに含めないでください。ただし、パスの最後であれば、ワイルドカードを指定することができます)。 例えば、ファイルがローカルのProjectXフォルダに同期されるようにするには、次のようにマッピングし直します。

... projectX/...

Remapped:フィールドでは行の順序に意味があります。複数行が同じファイルに再割り当てされている場合、後の行が優先されます。 再割り当ては子ストリームおよび関連付けられたワークスペースに引き継がれます。

Ignored:

書き込み可能、任意入力

クライアントビューで無視されるべきファイル名またはディレクトリ名のリスト。 以下に例を示します。

/tmp # ignores files named "tmp"
/tmp/... # ignores directories named "tmp"
.tmp # ignores file names ending in .tmp

Ignored:フィールド内の行は順不同です。 無視されるファイルおよびディレクトリは、子ストリームのクライアントビューに引き継がれます。

オプション

-d streamname

ストリーム仕様を削除します。 ストリーム仕様は、子ストリームまたはストリームのクライアントワークスペースによって参照されている場合には削除できません。 ストリームを削除しても、中のファイルは削除されません。 ただし、そのストリームに変更をサブミットできなくなります。

-f

管理者は-fオプションを使用して、他のユーザが所有しているロックされたストリームを削除または変更することが可能です。

-i

ストリーム仕様を標準入力から読み取ります。

-o

ストリーム仕様を標準出力に書き出します。 デフォルトでは、クライアントワークスペースに関連するストリームを出力します。 stream@change引数を渡した場合、Helixサーバは、指定された時点のチェンジリストのストリームのバージョンを使用します。

-o -v

冗長オプション。このストリーム用に自動生成されたクライアントビューを含めます。

-P parent

新しいストリーム仕様を作成する際にストリームの親を指定します。 (このオプションは既存のストリーム仕様には効果がありません。)

-t type

新しいストリーム仕様を作成する際に、ストリームのタイプをmainlinedevelopmentreleasetaskvirtualのどれかに指定しなければなりません。

-as

p4 stream resolveで、「安全な」衝突解決を行います。マージが必要なフィールドはスキップされます。

-am

p4 stream resolveで、マージによる衝突解決を行います。衝突するフィールドはスキップされます。

-af

p4 stream resolveで、衝突するテキストフィールドを強制的に連結します。

-at

p4 stream resolveで、theirsの受け入れを強制し、yoursを上書きします。

-ay

p4 stream resolveで、yoursの受け入れを強制し、theirsを上書きします。

-o -v

p4 stream resolveで、衝突解決が必要なフィールドをプレビューします。

-n

p4 stream resolveで、マージに使用されるbaseを出力します。

g-opts

詳細については、「グローバルオプション」を参照してください。

使用上の留意点

ファイル引数にリビジョン指定子を使えるか? ファイル引数にリビジョン範囲を使えるか? 最低限必要なアクセスレベル

適用外

適用外

open

  • その名前が示すとおり、タスクストリームは短期的な使用が意図されています。変更を親ストリームに昇格させてタスクストリームの使用を終了したら、タスクストリームを削除してください。

p4 stream -t mainline //streams/product1 ディポ名と同じストリーム内にメインラインストリームが作成されます。

p4 stream -t development -P main //projectX/bruno-dev

メインラインをブランチすることにより、プロジェクトX用の開発ストリームを作成します。

関連コマンド

ストリームを一覧表示する

p4 streams

ストリームディポを作成する

p4 depot