perforce 笔记

简介

一个版本控制工具

基本概念

depot

depot 翻译过来为仓库,在安装perforce后,默认会有一个local的depot,并且名字也叫depot。depot包含下面几种(:
来源于官方文档和chatgpt)

  • local : 默认类型,文件直接存储在 Perforce 服务器上
  • stream : 用于管理流式开发模型(Streams)。
  • remote : 允许一个 Perforce 服务器访问另一个服务器上的 depot,适用于跨服务器协作。
  • archive : 存储已归档的文件,不支持提交或编辑,主要用于历史记录的长期保存。
  • spec : 存储已归档的文件,不支持提交或编辑,主要用于历史记录的长期保存。
  • unload : 存储被卸载的客户端工作区或任务流的数据,减少服务器的负担。
  • tangent :
  • graph : 用于存储 Git 仓库中的数据,支持 Git 和 Perforce 同时工作(Git Fusion 功能)。
  • trait

stream

stream 为流,保存在服务器上。是一种特殊的depot。

workspace

workspace : 工作空间,内容保存在本地目录。在将perforce服务器上的内容sync到本地时,文件默认不具备写的权限,需要使用p4 open xxx将某个文件的状态至于open状态,这个操作会让某个文件具有了写的权限。使用chmod来改变文件的属性不会改变该文件在perforce上的状态

client

client : clinet和workspace可以理解为一样的东西.What’s the relationship between client and workspace in perforce?

启动

服务端

使用p4d或者使用脚本 p4d.sh。参数:

  • -r 指定根目录
  • -d 指定 TCP/IP 端口

客户端

使用p4v启动图形化界面

客户端配置

client设置

在进入workspace后,使用p4 client可以修改client的一些设置, 比如SubmitOptions选项,输出可能为

  SubmitOptions: submitunchanged 

这里表示所有open的文件都可以提交到depot上,哪怕文件没有更改,SubmitOptions可用的选项有:

选项 描述
submitunchanged 所有open的文件,不管内容是否有改变,都提交到depot上,默认设置
submitunchanged+reopen 所有open的文件,不管内容是改变,都提交到depot上,并且所有本来open的文件重新在默认的changelist中打开
revertunchanged 只会提交内容,类型或者resolved(冲突)有变化的文件,没发生改变的文件会revert回去
revertunchanged+reopen 只会提交default changelist中,内容,类型或者resolved(冲突)有变化的文件,没发生改变的文件会revert回去,并且在default changelist中不会处于open状态
leaveunchanged 只会提交内容,类型或者resolved(冲突)有变化的文件,没有发生改变的会移动到default changelist中
leaveunchanged+reopen 只会提交内容,类型或者resolved(冲突)有变化的文件,没改变的文件会移动到default changelist中,并且改变的文件会在default chagnelist中重新打开

命令

depot相关

  • p4 depots : 查看所有的 depot
  • p4 depot xx : 新建 xx depot
  • p4 depot -d xx : 删除 xx depot
  • p4 depot -f -d sandbox : 强制删除 sandbox depot
  • 删除非空的 depot
    • p4 obliterate -y //lang/...
    • p4 depot -d lang

stream相关

  • p4 depot -t stream JamCode : 创建一个 stream depot
  • p4 stream -t mainline //lang/c : 在 lang 下创建 c,为 mainline 类型,前提是lang的深度必须要为2

client/workspace 相关

  • p4 client xxx : 创建 client xxx
  • p4 client -d release1 : 删除 client release1
  • p4 clients : 列出所有的 clients
  • p4 client -S stream clientname : 新建一个 client,并且与 stream 绑定
  • p4 client -s -S stream clientname : 改变 client 与 stream 的映射
  • p4 client -S //JamCode/main : 将 workspace 与 stream 绑定
  • p4 workspaces : 查看所有的 workspace
  • p4 workspace xx : 创建 xx workspace
  • p4 workspace -d xx : 删除 xx workspace

文件相关

  • p4 add file : 添加file
    • p4 add xx/... : 添加俺xx目录所有文件
  • p4 edit file : 编辑file
    • p4 edit xx/... : 编辑xx下的所有文件
  • p4 opened : 查看已经open的文件
  • p4 submit -d "添加描述" aaa : 提交文件aaa到perfore服务器
  • p4 submit -c xxx : 提交某个changelist xxx
  • p4 sync test : sync文件test的最新版本
    • p4 sync test#1 : sync文件test的第一个版本
    • p4 sync -n  : 查看sync的结果,不实际sync
  • p4 diff a b : 比较文件a和文件b
    • p4 diff a#1 a#2 : 比较文件a的第一版和第二版
  • p4 change xxx : 可修改xxx的描述
  • p4 changes -m 1 ...#have : 查看某个workspace下已有的最新changelist
  • p4重命名文件操作,比如把aa命名为bb
    • p4 edit aa
    • p4 move aa bb
    • p4 submit -d “xxxx” bb

user相关

  • p4 users : 查看所有的用户
  • p4 groups : 查看所有的组
  • p4 user -f xx : 新建 xx 用户,如果用户存在,则可以修改用户的密码,在Password一栏,修改密码,如果没有,则新建一栏,保存后再次打开会加密
  • p4v 修改用户的密码:p4v -> connection -> change password

集成

  • p4 integrate //script/tool/add_gps_info.py //language/python/add_gps_info.py 将//script/tool/add_gps_info.py集成到//language/python中,需要在//lang/python相关联的workspace中操作
如果在这个过程中遇到了其它问题,欢迎在评论区留言,如果你已解决,也欢迎把具体的解决方法留在评论区,以供后来者参考

类似文章

guest
0 评论
内联反馈
查看所有评论