Perforce Stream 概述
什么是 Stream
我个人的理解是,Stream 是 Perforce 推出的、类似于传统分支但更智能的“流”。它提供可视化视图,便于查看分支间的同步关系。
优缺点
- 优点:并发开发、互不影响;主线改动少;分层清晰。
- 缺点:查看历史相对麻烦;通常需要多个工作区(可通过调整工作区根目录在一个工作区间切换多个 Stream,但相对麻烦)。
注:为每个 Stream 准备一个本地文件夹可加速工作区切换,节省时间。
新建 Stream
创建 Stream Depot(P4Admin)
- 打开 P4Admin。
- File → New → Depot,类型选
Stream
。 - 设置
Stream Depth
(库的层级深度,建议 2 以便在库中放置多个 Stream)。
创建主干(Mainline)
- 打开 P4V。
- File → New → Stream。
- 设置
Stream Name
。 Type
选择mainline
。
注:注意保存位置(Depot/路径)。
创建分支(Branch)
方式一:File → New → Stream。
方式二:在 StreamGraph/Stream 列表中,右键父节点(如主干)创建。
分支类型
- Development:用于长期项目和主要新特性开发。适合长期演进版本。
- Release:用于修复 bug、测试与发布分发。
- 注意:Release 分支建议在创建时取消勾选“From parent”自动传播(Propagation),以避免主干更新自动同步到发行版本;同时保留从 Release 合并修复回主干。
- 注意:Release 分支建议在创建时取消勾选“From parent”自动传播(Propagation),以避免主干更新自动同步到发行版本;同时保留从 Release 合并修复回主干。
- Virtual:用于缩小范围并直接提交给父级,常作为筛选器创建特定子集。
- Task:轻量分支,便于短期 bug 修复/小特性开发。可放在其他 Depot,父节点可为空或其他库(含标准库)。
- 建议统一放入
Task
Depot,便于后续集中管理;确认 Location 是否为 Task 路径,必要时手动调整。 - 注意:Task 创建后不可删除,且不可同名;不使用时不可见。
- 建议统一放入
创建分支时的注意事项:
- “自动创建工作区”可不勾(按需)。
- “将父节点文件填充到分支”默认勾选(通常保留)。
使用 Stream
新建 Stream 工作区
- 新建工作区(Workspace)。
- 设置工作区名(Workspace name)。
- 设置工作区根目录(Workspace root)。
- 选择对应的 Stream。
工作区切换(StreamGraph)
- 在 P4V 的 View 中打开 StreamGraph。
- 同一 Depot 内:拖拽“电脑”图标到目标 Stream 即可快速切换;Perforce 会自动下载/清理差异文件,工作区根目录不变。
- 不同 Depot 间:标准做法是切换工作区;若受工作区数量上限约束(如 ≤10 个),可通过修改现有工作区实现切换:
- 在 Workspaces 视图中右键工作区 → Edit。
- 修改
Workspace root
为目标工程目录。 - 修改
Stream
为目标工程对应的流(不必为主干,建议与本地目录对应,以便后续链接)。 - 选择是否“拷贝”文件:本地已存在则不拷贝;否则选择拷贝。
- 若选择不拷贝,需执行同步指令(见下文“Perforce 指令”)。
- 在 Workspaces 视图中右键工作区 → Edit。
合并与更新
- 两个流之间的上箭头表示“可更新”(copy to child/parent),下箭头表示“可合并”(merge)。
- 无箭头:当前不支持该方向;灰色箭头:已一致;绿色箭头:有更新或差异。
流程建议:
- 先将工作区切换到“目标流”。例如:把个人流改动更新到主干,应切到“主干”而非个人流。
- 在目标流上右键:
Merge to
为合并,Copy to
为拷贝更新。 - 选择
Source Stream
(表示“从哪里到这里”)。
- 勾选自动合并并提交;若有冲突则改为手动处理后提交。
连接外部文件(类似 SVN externals)
用途:将其他库(通常是公共库)中的文件连接到当前库中使用。
示例:以插件 Prefixed 为例
- 插件在公共库中的位置:
.../Save/UnrealPlugins/Prefixed/5.2/...
- 在主干上右键编辑,在“高级”中添加映射。
- 点击应用。
注:分支会自动继承主干设置;若仅在某个分支使用,请只修改该分支。
Perforce 指令
在 P4V 中查看/使用命令行
同步指令(不重新下载已存在文件)
p4 sync -k
- 作用:将本机文件与版本库记录建立“已同步”的关联,避免重复下载。
- 建议:执行成功后运行“clean”进行校验与清理。