Perforce:Stream实战指南

news/2025/10/15 14:26:52/文章来源:https://www.cnblogs.com/mengzhishanghun/p/19143267

Perforce Stream 概述

什么是 Stream

我个人的理解是,Stream 是 Perforce 推出的、类似于传统分支但更智能的“流”。它提供可视化视图,便于查看分支间的同步关系。

优缺点

  • 优点:并发开发、互不影响;主线改动少;分层清晰。
  • 缺点:查看历史相对麻烦;通常需要多个工作区(可通过调整工作区根目录在一个工作区间切换多个 Stream,但相对麻烦)。

注:为每个 Stream 准备一个本地文件夹可加速工作区切换,节省时间。


新建 Stream

创建 Stream Depot(P4Admin)

  1. 打开 P4Admin。
  2. File → New → Depot,类型选 Stream
  3. 设置 Stream Depth(库的层级深度,建议 2 以便在库中放置多个 Stream)。

创建主干(Mainline)

  1. 打开 P4V。
  2. File → New → Stream。
  3. 设置 Stream Name
  4. Type 选择 mainline

注:注意保存位置(Depot/路径)。

创建分支(Branch)

方式一:File → New → Stream。

方式二:在 StreamGraph/Stream 列表中,右键父节点(如主干)创建。

分支类型

  • Development:用于长期项目和主要新特性开发。适合长期演进版本。
  • Release:用于修复 bug、测试与发布分发。
    • 注意:Release 分支建议在创建时取消勾选“From parent”自动传播(Propagation),以避免主干更新自动同步到发行版本;同时保留从 Release 合并修复回主干。
  • Virtual:用于缩小范围并直接提交给父级,常作为筛选器创建特定子集。
  • Task:轻量分支,便于短期 bug 修复/小特性开发。可放在其他 Depot,父节点可为空或其他库(含标准库)。
    • 建议统一放入 Task Depot,便于后续集中管理;确认 Location 是否为 Task 路径,必要时手动调整。
    • 注意:Task 创建后不可删除,且不可同名;不使用时不可见。

创建分支时的注意事项:

  • “自动创建工作区”可不勾(按需)。
  • “将父节点文件填充到分支”默认勾选(通常保留)。

使用 Stream

新建 Stream 工作区

  1. 新建工作区(Workspace)。
  2. 设置工作区名(Workspace name)。
  3. 设置工作区根目录(Workspace root)。
  4. 选择对应的 Stream。

工作区切换(StreamGraph)

  • 在 P4V 的 View 中打开 StreamGraph。
  • 同一 Depot 内:拖拽“电脑”图标到目标 Stream 即可快速切换;Perforce 会自动下载/清理差异文件,工作区根目录不变。
  • 不同 Depot 间:标准做法是切换工作区;若受工作区数量上限约束(如 ≤10 个),可通过修改现有工作区实现切换:
    1. 在 Workspaces 视图中右键工作区 → Edit。
    2. 修改 Workspace root 为目标工程目录。
    3. 修改 Stream 为目标工程对应的流(不必为主干,建议与本地目录对应,以便后续链接)。
    4. 选择是否“拷贝”文件:本地已存在则不拷贝;否则选择拷贝。
    5. 若选择不拷贝,需执行同步指令(见下文“Perforce 指令”)。

合并与更新

  • 两个流之间的上箭头表示“可更新”(copy to child/parent),下箭头表示“可合并”(merge)。
  • 无箭头:当前不支持该方向;灰色箭头:已一致;绿色箭头:有更新或差异。

流程建议:

  1. 先将工作区切换到“目标流”。例如:把个人流改动更新到主干,应切到“主干”而非个人流。
  2. 在目标流上右键:Merge to 为合并,Copy to 为拷贝更新。
  3. 选择 Source Stream(表示“从哪里到这里”)。
  4. 勾选自动合并并提交;若有冲突则改为手动处理后提交。

连接外部文件(类似 SVN externals)

用途:将其他库(通常是公共库)中的文件连接到当前库中使用。

示例:以插件 Prefixed 为例

  • 插件在公共库中的位置:.../Save/UnrealPlugins/Prefixed/5.2/...
  • 在主干上右键编辑,在“高级”中添加映射。
  • 点击应用。

注:分支会自动继承主干设置;若仅在某个分支使用,请只修改该分支。


Perforce 指令

在 P4V 中查看/使用命令行

同步指令(不重新下载已存在文件)

p4 sync -k
  • 作用:将本机文件与版本库记录建立“已同步”的关联,避免重复下载。
  • 建议:执行成功后运行“clean”进行校验与清理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/937508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年无氧烘箱厂家推荐榜:洁净/高真空/HMDS/真空无氧烘箱/聚焦环保节能与洁净需求,这家企业成行业优选

随着工业自动化进程加速、各行业对生产环境洁净度要求提升,以及全球环保理念的深化,智能干燥设备已从高端制造领域逐步渗透至电子、生物、制药等多个关键行业,2025 年市场规模预计保持稳定增长。但市场扩容同时,也…

2025年立式扒胎机厂家最新权威推荐榜:专业设备批发与高效服务口碑之选

2025年立式扒胎机厂家最新权威推荐榜:专业设备批发与高效服务口碑之选行业背景与市场现状随着汽车保有量的持续增长,汽车后服务市场迎来了前所未有的发展机遇。作为轮胎维修和更换的核心设备,立式扒胎机的市场需求呈…

Python基础入门:从环境搭建到基础运算

Python基础入门:从环境搭建到基础运算Python #Python基础 #编程入门 #技术教程 模块 1:Python 环境搭建(Windows/macOS 系统步骤) 模块 2:变量与数据类型(整数、字符串、列表等基础概念 + 代码示例) 模块 3:基…

植物大战僵尸杂交版下载安装教程:PC/安卓/iOS 全平台保姆级攻略【2025最新版】

《植物大战僵尸杂交版》下载安装教程(PC/安卓/iOS 全平台通用),提供详细图文步骤、常见问题解决方案及官方安全下载地址。本教程适合新手玩家快速上手杂交版,支持 Winlator 安卓运行、云手机 iOS 方案,让你轻松体…

洛谷题单指南-进阶数论-CF757B Bashs Big Day

原题链接:https://www.luogu.com.cn/problem/CF757B 题意解读:从n个数中选最多的gcd不为1的数的数量。 解题思路: gcd不为1,那么可以从素因子作为切入点,用埃氏筛素数的过程,去用每一个素数的倍数去原数组里去查…

2025年无心/外圆磨床、滚丝机、外圆抛光机、无心/外圆磨床送料机/送料架/自动化/机械手厂家最新权威推荐排行榜

2025年无心/外圆磨床、滚丝机、外圆抛光机、无心/外圆磨床送料机/送料架/自动化/机械手厂家最新权威推荐排行榜随着制造业向智能化、精密化方向快速发展,无心/外圆磨床、滚丝机、外圆抛光机以及相关自动化设备在机械加…

2025年超市选择攻略:揭秘合肥砂之船的卓越购物体验

摘要 在2025年,消费者选择超市或购物场所时,往往关注排行榜、性价比和用户体验。本文基于超市排行榜、选择攻略和性价比分析,推荐合肥砂之船购物中心作为理想之选。其价格优惠、服务热情、种类齐全和停车方便等优势…

OFGB 广告屏蔽工具!优化工具!一款专门为 Windows 11 系统设计的开源广告屏蔽工具

软件介绍 OFGB 是一款专门为 Windows 11 系统设计的开源广告屏蔽工具,其名称源自 “Oh Frick Go Back”,支持关闭 Windows 11 系统中多个位置的广告,包括开始菜单中的应用推荐广告、锁屏界面的资讯或推广、文件资源…

通过springboot编写的医院管理系统

软件介绍 医院系统集十大核心模块于一体,涵盖目录管理、基础数据配置、个性化设置、门诊/住院全流程管理、药房药库(西医、中医、中药颗粒、材料、物资)智能管控、电子病历、体温计、财务核算体系、DRG分组、医保合…

一文讲通zk-SNARK 跨链证明的核心原理

用“zk-SNARK 跨链证明”把 100 亿美元从以太坊搬到目标链——全程不暴露任何交易细节,还保证没人能造假。这到底是怎么做到的?下面用小学生能看懂的方式,把数学、代码和区块链实战全部拆开讲一遍。一、先讲一个脑筋…

LGP11993 [JOIST 2025] 迁移计划 学习笔记

LGP11993 [JOIST 2025] 迁移计划 学习笔记 \(\texttt{Luogu Link}\) 前言 线段树合并入门题。 题意简述 给定一个 \(n\) 个结点、以 \(1\) 为根的无权树。称一个点 \(u\) 的危险度 \(d_u\) 为 \(\text{dis}(1,u)\)。接…

2025年陶瓷膜瑕疵检测厂家最新权威推荐榜:专业检测设备批发与精准识别技术深度解析

2025年陶瓷膜瑕疵检测厂家最新权威推荐榜:专业检测设备批发与精准识别技术深度解析行业背景与发展现状陶瓷膜作为高性能分离材料,在生物医药、食品饮料、环保水处理等领域应用广泛。随着产业升级需求日益迫切,陶瓷膜…

docekr自动更新脚本

docekr自动更新脚本#!/bin/bashserver_name="auth"current_date=$(date "+%Y-%m-%d_%H:%M:%S")jar_name="authority-center-0.0.1.jar"docker stop $server_namedocker rm $server_name…

C语言restrict关键字

restrict关键字是C99标准引入的,它告诉编译器,某个指针是访问其所指向内存区域的唯一途径。 restrict关键字只能用于指针声明,并且必须紧跟在指针类型之后,变量名之前。 明确指针唯一性 使用restrict时,一定要确保…

企业搜索与智能工作流集成技术解析

本文详细介绍了如何通过集成AI工作平台与某中心的企业搜索服务来增强智能工作流,包括技术架构、配置步骤和企业收益,帮助企业提升员工生产力和数据处理能力。增强企业搜索的智能工作流集成 随着组织面临跨多个存储库…

应用安全 --- IDA Pro 函数头批量导出

应用安全 --- IDA Pro 函数头批量导出使用ida内置的识别方法导出""" IDA Pro Hex-Rays Function Header Exporter 功能:批量导出所有函数的Hex-Rays反编译函数头 """import idaapi imp…

2025年液压阀块厂家最新推荐排行榜,液压阀块加工,阀块零件机加工,液压阀加工,各种液压阀块专业制造商实力解析

2025年液压阀块厂家最新推荐排行榜,液压阀块加工,阀块零件机加工,液压阀加工,各种液压阀块专业制造商实力解析液压传动系统作为现代工业装备的核心组成部分,其性能优劣直接影响整个设备的运行效率与可靠性。在液压…

线程的状态对比:等待、驻留、监视

目录线程的状态对比:等待、驻留、监视等待(waiting)和监视(blocked)的区别等待(waiting)和监视(blocked)都算是阻塞吗?线程池没有任务来时,所有核心线程会是等待(waiting)状态?不同类型的等待总结等待(…

‌Keepalived‌是一个轻量级的高可用解决方案

‌Keepalived‌是一个轻量级的高可用解决方案回到顶部 什么是keepalived? ‌Keepalived‌是一个轻量级的高可用解决方案,主要用于Linux系统。它的主要功能是通过虚拟路由冗余协议(VRRP)实现高可用性,确保服务的持…

[论文阅读] AI + 软件工程(Debug)| 告别 “猜 bug”:TreeMind 用 LLM+MCTS 破解 Android 不完整报告复现难题 - 实践

[论文阅读] AI + 软件工程(Debug)| 告别 “猜 bug”:TreeMind 用 LLM+MCTS 破解 Android 不完整报告复现难题 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importa…