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