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
      
    • 查看某个client中pending的cl
      • p4 changes -s pending -u <your-username> -c <your-client>
    • 删除某个CL:
      • p4 change -d <changelist-number>只能删除CL中没有文件的
    • p4打开某个文件夹下面的所有内容
      • p4 edit //depot/project/...
      • p4 edit //depot/project/xxx/...

    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 评论
    内联反馈
    查看所有评论