||

版本管理工具-Module

目录

    简介

    一个版本控制工具

    基本概念

    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
    • p4 streamlog //lang/c : 查看stream spec的更改历史
      • p4 streamlog -m 10 //lang/c : 查看stream spec的最近10次更改记录

    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

    p4 add可以将workspace中的文件标记为需要上传到服务器上,该命令不会创建文件或者覆盖原文件,在执行p4 submit之前,文件不会被上传到服务器上。

    • 完整命令:p4 [g-opts] add [-c changelist] [-d -f -I -n] [-t filetype] file ...
    • 举例:
      • p4 add file : 添加file
      • p4 add xx/... : 添加俺xx目录所有文件

    p4 edit

    p4 edit可以将文件的权限更改,赋予文件写(w)权限,在执行p4 sumbit前,改动的部分不会真正提交到服务器上。常见用法举例:

    • p4 edit file : 编辑file
      • p4 edit xx/... : 编辑xx下的所有文件
    • p4打开某个文件夹下面的所有内容
      • p4 edit //depot/project/...
      • p4 edit //depot/project/xxx/...

    p4 open

    • p4 opened : 查看已经open的文件

    p4 submit

    • p4 submit -d "添加描述" aaa : 提交文件aaa到perfore服务器
    • p4 submit -c xxx : 提交某个changelist xxx

    p4 sync

    • p4 sync test : sync文件test的最新版本
      • p4 sync test#1 : sync文件test的第一个版本
      • p4 sync -n  : 查看sync的结果,不实际sync

    p4 diff

    • p4 diff a b : 比较文件a和文件b
      • p4 diff a#1 a#2 : 比较文件a的第一版和第二版

    p4 change

    • p4 changelistp4 change的别名
    • p4 change xxx : 可修改xxx的描述
    • p4 changes -m 1 ...#have : 查看某个workspace下已有的最新changelist

    p4 changes

    • p4 changelistsp4 changes的别名
    • 列出已经提交的和等待提交的变更集
    • 完整命令p4 [g-opts] changes [-i -t -l -L -f] [-c client [-E]] [ -e changelist#] [-m max] [-r] [-s status] [-u user | --me] [[FileSpec][revSpec]][--stream | --nostream]
    • p4 changes -u xx -m 100 : 查看某人最新的100条变更集

    p4 diff

    用于diff两个文件

    p4 diff2

    其它一些组合操作

    • p4重命名文件操作,比如把aa命名为bb
      p4 edit aa
      p4 move aa bb
      p4 submit -d "xxxx" bb
      
    • p4 移动文件夹
    p4 edit //xxx/xx/old/...
    p4 move //xxx/xx/old/... //xxx/xx/new/...
    
    • 查看某个client中pending的cl
      • p4 changes -s pending -u <your-username> -c <your-client>
    • 删除某个CL:
      • p4 change -d <changelist-number>只能删除CL中没有文件的

    user相关

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

    集成

    • 需要到待集成的workspace操作,也即是没有该文件的workspace
    • p4 integrate -n : 显示过程,不实际集成
    • 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中操作
      p4 integrate //script/tool/… //language/python/…` 讲//script/tool/流中的所有文件都集成到//language/python/流中
    如果在这个过程中遇到了其它问题,欢迎在评论区留言,如果你已解决,也欢迎把具体的解决方法留在评论区,以供后来者参考
    ×

    感谢您的支持,请扫码打赏

    微信打赏 支付宝打赏
    guest
    0 评论
    内联反馈
    查看所有评论