#タスクストリームとは
公式マニュアル
Perforceのストリームで最小限の関連するファイルのメタデータだけ保存するため軽量らしい。
Gitのブランチを作る感覚で作業後にタスクストリームを作ろうとしたらできなかった上に結構時間がかかってしまった。
#結論
先にタスクストリームを作っておいてから作業しましょう。
変更をShelveしておき、タスクストリームを作ってから
Branch Mappingを作成してからUnshelveすればよい。
jam_projストリームで作業した後にタスクストリームjam_r2.0にサブミットしたい場合は
一度Shelveしたあとに、Branch Mappingを作成してViewの欄に以下のように書く。
//depot/jam_proj/... //depot/jam_r2.0/...
その後jam_r2.0ストリームに移動しBranch Mappingを利用してUnshelveする。
#背景
Perforceのタスクストリームの機能を知らず、とりあえずメインストリームでプロトタイプの機能開発をしていた。
作業がひと段落したところでサブミットしたかったが、実験用コードなのでメインストリームにはサブミットしたくなかった。そしてこのタイミングでタスクストリームという機能を知った。
#英語圏にも同様のことで詰まってた人がいた
スレッドの#5
https://forums.perforce.com/index.php?/topic/3043-unshelving-to-another-stream/
#やってダメだったこと
- 親ストリームで作ったPending listから子のタスクストリームにサブミットしようとした
- 親ストリームでShelveしてからストリームを切り替え、Unshelveする
どちらもに file(s) not mapped in stream
というエラーでサブミット/Unshelveできず
#なぜできなかったか(仮説)
親ストリームで作ったShelveを子ストリームで取得、はできそう
参考リンク
マニュアルを読む限りはタスクストリームはストリームを作った後に作業したファイルのみ変更を記録(mapping)していると思われるので
親ストリームでのファイル変更を適用しようとすると存在しないと言われている?
Perforceに詳しい人がいたら実際のところどうなのか聞きたいです。
#結局どうしたか
- 変更したファイルを別の場所にコピーし、チェンジリストをすべてRevertしてからストリームを切り替えた。
- その後変更したファイルをチェックアウトして上書きしてサブミットした