PM見習いのよしなしごと

エンジニアもどきのよしなしごと改め。仕事とか関連の備忘録

Perforce の Stream について

Perforce あらため Helix Core

Perforce は会社名であってソフトウェア名じゃなくなりました。(っていうのを毎回忘れそうになる) ので以降は頑張ってHelix Core で通していきたいと思います。

Stream ってなんぞや

公式のページ

https://www.perforce.com/manuals/v17.3/p4v/#P4V/streams.about.html?Highlight=streams

Mainline モデルと呼ばれる、開発フローを実現しやすくするために考えられたデータコンテナ。ファイルとかを保存するための場所。

Stream の種類をざっくり出してみる

f:id:usui3153m:20190512151725p:plain

Mainline ストリーム

  • 開発のためにファイルの更新反映を行っていくストリーム。
  • ここから派生したストリームに対してのマージは以下の通り
    • Release ストリーム:コピーアップ不可。Release ストリームが作られる際にブランチわけされたファイルを送ることはできるが、以降Mainline ストリー無の変更をReleaseストリームに反映することはできない。*1
    • Development ストリーム:マージダウン可。Development ストリームに対し、Mainline ストリームの変更をマージすることができる。

Development ストリーム

  • Mainline ストリームとは外れた、開発・研究を行うためのストリーム。
  • Mainline ストリームに反映はしたくないけど、Mainline ストリームと同様の環境でR&Dなどを行いたい。Mainline に反映できるかわからないけど、この仕様を実装してみてほしい。など、の理由で作られる(ものと思われる)
  • ここから派生したストリームに対してのマージは以下の通り。
    • Release ストリーム:マージダウン可能。コピーアップ不可。Release ストリームが作られる際にブランチわけされたファイルを送ることはできるが、以降Mainline ストリー無の変更をReleaseストリームに反映することはできない。*2
    • Mainline ストリーム:コピーアップ可。Mainlineの変更をマージしたあと、Development ストリームの内容をコピーアップすることができる。

Release ストリーム

  • Mainline で開発が終了、Fix してリリースされるバージョンが格納されるストリーム。
  • バージョンアップのたびに、Release ストリームが Mainline に紐付いて作られていくのが一般的(と思われる)
  • ここから派生したストリームに対してのマージは以下の通り。
  • Mainline , Development:マージダウン可。Release ストリーム上での修正点は、親ストリームに対してマージダウン可能。*3

Virtual ストリーム

  • 実体の存在しないストリーム。
  • 親のストリームに対して、修正が即時反映されるが、別ストリームとして作業することはできる。
  • ストリーム設定を親のストリームとは変えたものにしたい場合などに利用される。
  • 一例) 以下のニーズを満たすために、Virtualストリームを作成し、Binariesフォルダ下をサーバーから取得してこないように設定する。などの使い方がある。
    • エンジニアに対しては、UE4のエンジンフォルダ下のBinariesデータは不要である*4
    • エンジニア以外はUE4を起動するためにBinariesデータは必要。
    • 編集するプロジェクトは職種問わず同一で、即時変更が反映されるほうがいい。

Task ストリーム

  • 必要最小限のデータのみ親ストリームから取得して、作業を行うことのできるストリーム。
  • PCの容量やHelix Core サーバーの容量を圧迫しないなどのメリットがある。*5

*1:Release ストリーム作成時の設定次第では、コピーアップを許可できるらしい。

*2:1と同じ

*3:Development ストリームを親として、Release ストリームが作成可能だったため、合わせて記載している。

*4:自分たちでソースコードをビルドして、その都度生成するから

*5:ものの筆者はまだちゃんと利用したことが無いのでテストを行いたいところ。