Perforce 客户端基础
安装 Perforce Client
- 到 官方下载地址
,找到
P4V,选择对应的操作系统,下载并安装
登录
- 打开装好的
P4V,在Server中输入服务器的地址和端口,在User中输入用户名,可以点击Browser...按钮查看所有的用户列表 - 点击
OK按钮后,会弹出一个密码输入框,输入密码后点OK按钮连接服务器

创建工作目录
- 点击
(no workspace selected)下拉框,选择New Workspace...,在弹出的对话框中填写以下信息Workspace name: 工作区名称Workspace root: 工作区根目录路径

同步代码库
- 选择
Depot标签,在库名上右键,选择Get Latest Revision,同步完成后,就会在工作区根目录下看到同步下来的代码库

- 如果同步下来的文件直接创建在了工作区根目录下,那么可以刷新一下映射来将文件组织到库文件夹下,如图

主界面
左边浏览窗口
Depot标签页:查看所有在版控服务器上的文件状态Workspace标签页:对应的版控文件列表- 文件状态指示:
- 黄色三角:表示该文件不是最新的
- 右上角蓝色对号:表示该文件被另一个用户检出(checkout),鼠标悬浮可以查看用户信息
- 左上角红色对号:表示该文件正在被自己检出

右边视图窗口
位于主窗口右边的区域是视图窗口列表,可以通过菜单栏上的 View 菜单来打开更多的功能视图,几个重要的视图如下
History: 查看文件的修改历史Pending Changelists: 查看检出的文件列表Submited Changelists: 查看历史提交信息Branch Mappings: 查看分支信息Labels: 查看标签信息

底部视图窗口
位于主窗口底部的视图窗口主要是日志窗口,显示各个命令的执行内容和结果,如果需要写版控脚本,可以参考这里的命令

基础操作
Perforce 的最基本操作,就是 获取文件最新版本(Get Latest Revision)->检出(chekcout)->加锁(可选)->修改->查看差异(可选)->丢弃修改(可选)->提交(submit)->解决冲突(可选)
获取最新版本
在文件浏览窗口中,如果发现某个文件有黄色三角标记,则表示该文件本地版本不是最新的,# 号后面的第一个数字表示本地的版本号,第二个数字表示服务器上的版本号,此时就可以通过右键文件名(或文件夹名),选择 Get Latest Revision 来获取最新的版本

检出(Checkout)
在Perforce中,修改某个文件前需要先检出该文件,以免在不知道的情况下有多个人同时修改同一个文件。当然,对一个已被其他人检出的文件,也可以进行检出操作,这样提交文件时可能会冲突,需要先解决冲突才能成功提交到服务器中。检出完成后,可以在右边的 Pending 窗口中看到所有被自己检出的文件

加锁
如果希望按顺序修改一个文件,特别是二进制文件,比如音乐、模型、特效,那么可以在检出文件后对文件进行加锁,在 Pending 窗口中,右键文件,选择 Lock,这样只有当自己主动解锁或者提交之后,别人才可以提交他们的修改

查看差异
修改某个检出的文件后,如果想查看具体修改的地方,可以在 Pending 窗口中,右键文件,选择 Diff Against Have Revision。或者选择 Diff Against...,并在弹出的对话框中选择要比较的文件版本

丢弃修改
在对某个检出的文件进行修改后,如果想放弃这些修改,可以在 Pending 窗口中,右键文件,选择 Revert。注意,Revert之后不仅会丢弃修改,而且会把文件从检出列表中删除

提交修改
完成修改后,需要将修改过的文件同步到服务器上,可以在 Pending 窗口中,右键文件,选择 Submit...,并在弹出的对话框中,填写提交描述,增加或删除要提交的文件,最后确定提交。提交前还可以对文件执行 Revert If Unchanged操作,丢弃那些没有修改过的文件,保证提交中只包含有修改的文件

解决冲突
当文件冲突时,会使得后提交的人提交失败,如图

这时需要先解决冲突后才能提交,解决冲突首先需要对冲突的文件执行Get Latest Revision操作, 然后再执行 Resolve操作,在弹出的对话框中选择相应的解决冲突方式,解决后,再执行提交操作

忽略文件
在目录下新建一个 .p4ignore.txt 文件,在其中指定忽略规则(同Git的规则),然后执行命令 p4 set P4IGNORE=.p4ignore.txt
进阶操作
文件暂存(shelve)
当你正在对一个文件增加新功能,然后突然需要紧急修改该文件中的一个bug,那么就可以将当期的修改进度暂存起来(shelve),然后重新检出该文件,进行bug fix
或者你开发完成一个新功能,在提交前需要被review,那么可以将修改暂存,然后通知对方拉取该shelve进行review