P4D 2024.1 におけるストリーム間 p4 Integrate 動作の変更について
目次
P4D を 2024.1 以降のバージョンにアップグレードした後、p4 integrate コマンドがエラーとなります。
>p4 integ //stream/dev02/... //stream/dev01/...Must use a stream view to merge into //stream/dev01.... Try running: 'p4 merge --from dev02'
P4D アップグレード前は問題なく成功していました。
>p4 -u super -p 192.168.73.10:2201 integ //stream/dev02/... //stream/dev01/...//stream/dev01/main/projectA/sample1.txt#1 - integrate from //stream/dev02/main/projectA/sample1.txt#1,#2//stream/dev01/main/projectA/sample2.txt#1 - integrate from //stream/dev02/main/projectA/sample2.txt#1//stream/dev01/main/projectA/sample3.txt#1 - integrate from //stream/dev02/main/projectA/sample3.txt#1
解決策を教えてください。
P4D 2024.1 から、p4 integrate / p4 merge / p4 copy 実行時の挙動が変更されました。
これまでは、ストリームクライアント上で手動定義した ブランチビューを使用して、別ストリームとの統合処理を実行できました。
P4D 2024.1 以降では、ストリーム間の統合処理において ストリームのビュー情報を使用することが必須となります。
誤操作や、ストリーム設計を保護する目的で行われた変更です。
回避策
1. エラーメッセージで提案されたストリームビューを使用する
2. api プロトコル変数を95以下に設定する(p4 -Zapi=95 integrate -b mapping_name)
3. -F オプションを使用してこのチェックを上書きする(p4 integarate -F -b mapping_name)
4. 構成可能変数 dm.integ.stream.allowdepotfilespec=1 を設定する
1. エラーメッセージで提案されたストリームビューを使用する
最も推奨される方法です。
エラーメッセージに記載のコマンドを実行することで、ストリーム仕様の情報を使ったマージが実行されます。
p4 merge --from dev02
2. api プロトコル変数を95以下に設定する
コマンド実行時、api プロトコル変数をアップグレード前の P4D バージョンに対応する値である 95 以下を指定する方法です。
api プロトコル変数は p4 コマンドのグローバルオプション -Zapi で指定します。
p4 -Zapi=95 integrate -b mapping_name
3. -F オプションを使用してこのチェックを上書きする
p4 integrate コマンドを -F オプションを指定して強制的に実行する方法です。
p4 integarate -F -b mapping_name
4. 構成可能変数 dm.integ.stream.allowdepotfilespec=1 を設定する
非公開の構成可能変数 dm.integ.stream.allowdepotfilespec に 1 を設定することでストリーム間の統合処理実行時に -F オプションの指定を省略することができます。
非公開の構成可能変数のため、グローバルオプション -Ztag を指定して、p4 configure show コマンドを実行することでその詳細を確認します。
*p4 help configurables や、p4 help undocコマンド等でも表示されない構成可能変数となります。*1 を設定することで上記対応策 3 を実現するための設定となります。設定変更後、P4サーバーサービスの再起動は必要ございません。
コマンド例p4 -ztag configure show dm.integ.stream.allowdepotfilespec
結果
... Type tunable (default)
... Name dm.integ.stream.allowdepotfilespec
... Value 0
... Configurable dm.integ.stream.allowdepotfilespec
... Description If set to 1, removes requirement for force flag (-F) when integrating
between streams using filespecs with depot syntax. The default is 0.
... ValueType INT
... MinValue 0
... MaxValue 1
... DefaultValue 0
... Applicability Server
... RestartRequired No
... SupportLevel Undoc
... Category Miscellaneous
設定例
p4 -u super -p server:port configure set dm.integ.stream.allowdepotfilespec=1
・superには、super権限ユーザを指定します
・server:portには、対象Perforceサーバを指定します