ストリームのParentViewの例
このトピックの内容は以下のとおりです。
- ParentViewフィールドとp4 streamsコマンドの--parentviewオプションを操作する方法
- ParentView: inheritをParentView: noinheritに変換する効果
- 継承がない場合でも、ParentView: noinheritを使用して親ストリームから子に統合できます
ストリームを継承しないように変換する
- //streams/product1という名前のメインラインストリームを作成します。
p4 stream -t mainline //streams/product1
これにより、P4EDITORで指定されたエディターが開き、入力されたストリーム仕様が表示されます。 -
メインライン//projectX/mainの子として//projectX/bruno-devという名前の開発ストリームを作成します。
p4 stream -t development -P //projectX/main //projectX/bruno-dev
これにより、P4EDITORで指定されたエディターが開き、ストリーム仕様が入力され、それに応じて親フィールドとタイプフィールドが入力されます。
- 現在のクライアントワークスペースのストリームについて、ストリームがParentView noinheritに変換された場合に何が起こるかをプレビューしますが、実際に変換を実行したり、ストリーム仕様を開いたりしないでください。
p4 stream parentview -n --noinherit
- 今回は、-oオプションを追加して、変換されたストリーム仕様のプレビューも印刷します。
p4 stream parentview -n --noinherit
- 保留中のチェンジリスト1234がすでにあると仮定して、現在のクライアントワークスペースのストリームの変換を実行します。
p4 stream parentview -c 1234 --source-comments --noinherit
ストリームは、指定されたチェンジリストの現在のクライアントワークスペースで開かれます。
- 変更をすべてのユーザに表示するには、変更リストをサブミットします(編集用に開いたストリーム仕様の場合と同じように)。保留中のストリーム仕様を元に戻して、変換を中止することもできます。
以下のように--source-commentsオプションを含めることをお勧めします。
p4 stream parentview -c 1234 --source-comments --noinherit
変換の結果として変更または追加されたPaths、Ignored、またはRemappedフィールドにソースコメントが追加されるためです。これらのコメントは、変換されたストリームの祖先のストリーム仕様に基づいて、変換されたストリームビューがどのように計算されるかを確認するのに役立ちます。
非継承への変換の拡張例
以下は、変換を説明するための数個のストリームを含む拡張例です。
メインラインストリームと3つの開発ストリームを持つstrという名前のストリームディポにストリーム階層 ストリームディポ内にあるストリーム間の親から子への関係のセットです。があると仮定します。
メインライン
Stream: //str/main
Owner: super
Name: main
Parent: none
Type: development
Description:
Mainline
Options: allsubmit unlocked toparent fromparent mergedown
ParentView: inherit
Paths:
share ...
Ignored:
*.o
dev1子
Stream: //str/dev1
Owner: super
Name: dev1
Parent: //str/main
Type: development
Description:
Dev1 child
Options: allsubmit unlocked toparent fromparent mergedown
ParentView: inherit
Paths:
share ...
Remapped:
docs/... product_docs/...
dev2孫
Stream: //str/dev1
Owner: super
Name: dev2
Parent: //str/dev1
Type: development
Description:
Dev2 grandchild
Options: allsubmit unlocked toparent fromparent mergedown
ParentView: inherit
Paths:
share ...
Remapped:
import ssl_libs/... //depot/libs/ssl_libs/v1.0/...
dev2のdev3子
Stream: //str/dev2
Owner: super
Name: dev3
Parent: //str/dev2
Type: development
Description:
Created by super.
Options: allsubmit unlocked toparent fromparent mergedown
ParentView: inherit
Paths:
share ...
dev3のクライアントワークスペースビュー
すべてのストリームはParentViewinheritであるため、//str/dev3のワークスペースのクライアントワークスペースビューは、//str/mainメインラインストリームに戻るすべてのストリームの継承結果です。
Stream: //str/dev3
View:
//str/dev3/... //super_client/...
//depot/libs/ssl/1.0a/... //super_client/ssl_libs/...
//str/dev3/docs/... //super_client/product-docs/...
-//str/...%%1.o //super_client/...%%1.o
ビューには、継承されたすべてのものが反映されます。
- メインライン//str/mainには、*.oで終わるファイルの無視されたエントリがあります
- その子である//str/dev1は、docsパスを別の名前product-docsに再マッピングします。
- 次のストリーム//str/dev2は、非ストリームの場所からSSLライブラリをインポートするためのPaths行を追加します。
- 最後に、//str/dev3にはパスshare ...があります...
dev3を非継承に変換する
ストリーム//str/dev3のユーザは、ソースコメントを含めてストリームをParentView: inheritからParentView: noinheritに変換し、変換された仕様をサブミットします。
p4 stream parentview --source-comments --noinherit
p4 submt -So -d "Converting dev3 to noinherit"
変換後
- //str/dev3のワークスペースのクライアントワークスペースビューは変更されません
- //str/dev3のPathsフィールドは変更されます。
Stream: //str/dev3
Update:2020/11/05 11:30:02
Access:2020/11/05 11:42:21
Owner: super
Name: dev3
Parent: //str/dev2
Type: development
Description:
Created by super.
Options: allsubmit unlocked toparent fromparent mergedown
ParentView: noinherit
Paths:
import ssl_libs/... //depot/libs/ssl/1.0a/... ## merge from //str/dev2@8
share ...
Remapped:
docs/... product-docs/... ## copy from //str/dev1@9
Ignored:
*.o ## copy from //str/main@7
ここで、
- ParentViewフィールドはnoinheritとなりました
- //str/dev3のPaths、Ignored、Remappedフィールドは、すべての祖先ストリームのフィールドの内容に基づいて更新されました。
- コメントは、変更がどのストリームから発生したか、変更がコピーされたか、結果のストリームにマージされたかを示します。
親からのストリーム仕様を統合します。
別のユーザがSSLライブラリのバージョンを1.0aから1.1.1hに変更して、//str/dev2のPathsフィールドを変更するとします。
Paths:
share ...
import ssl_libs/... //depot/libs/ssl/1.1.h/...
dev3はParentView: noinheritに変換されたため、そのクライアントワークスペースビューはこの変更を継承せず、1.0aの元のインポートパスを反映します。
親ストリーム//str/dev2から//str/dev3に対して、ストリーム仕様の統合操作を実行します。
p4 integrate -r -As -S //str/dev3
Stream spec //str/dev3@5 - integrate field Paths from //str/dev2@10
p4 resolveコマンドを使用して衝突を解決します。この場合、ユーザは//str/dev2からの変更をatで受け入れることを選択します。これは、「その変更を受け入れる」ことを意味します。
p4 resolve -So
//str/dev3 Paths - resolving //str/dev2@10
Paths resolve:
at: import ssl_libs/... //depot/libs/ssl/1.1.h/...
ay: import ssl_libs/... //depot/libs/ssl/1.0a/... ## merge from //str/dev2@8
am: merge of both
Accept(a) Skip(s) Help(?) am: at
//str/dev3 Paths - copy from //str/dev2@10
ストリーム仕様は現在のクライアントワークスペースで(統合のために)開いており、ユーザは新しい仕様でクライアントビューがどうなるかを調べることができます。
View:
//str/dev3/... //super_client/...
//depot/libs/ssl/1.1.h/... //super_client/ssl_libs/...//str/dev3/docs/... //super_client/product-docs/...
-//str/...%%1.o //super_client/...%%1.o
//str/dev3のクライアントのクライアントワークスペースビューは、ストリーム//str/dev2のPathsフィールドに加えられた変更を反映するようになりました。
//str/dev3にはnoinheritParentViewがあるため、暗黙的な継承は発生しませんでした。代わりに、明示的な統合と解決を実行しました。//str/dev3の変更をすべてのユーザに表示するには、保留中の変更をサブミットします。これは、//str/dev3ストリームのすべてのクライアントワークスペースに影響します。