当前位置: 首页 > 工具软件 > P4A > 使用案例 >

[P4V]Perforce(P4V)使用教程

张高义
2023-12-01

Perforce(P4V)使用教程 

1.前言

        Perforce SCM System是一款构建于可伸缩客户/服务器结构之上的软件配置管理工具。仅仅应用TCP/IP,开发人员就能够通过多种Perforce客户端(几种平台的GUI、WEB、或命令行)访问Perforce服务器。Perforce能够被快速和容易地部署,即使对大型或分布式的站点,也只要求最小限度的管理。Perforce可以使用在50多个操作系统中,它包括版本控制、工作空间管理、变更处理和一个强大的分支模型。这里介绍的P4V是perforce的一种可以跨平台使用的客户端。

2.操作区 

       操作区中的内容主要由如下的几种工作区组成。 
     
 1.Pending changelists 工作区 :这里显示当前用户正在修改的文件和其他开发者正在修改的文件。当然,你只需要关心你自己的project即可。当你执行:Mark for Add,check out等操作时,这些信息就会显示在changlist列表中显示,并由不同的图标显示其状态。如果你修改完成后,执行submit就可提交更新文件;但也可以执行revert放弃所作的修改。 
     
 1.Submitted changelists 工作区 显示了近期所有项目组成员对项目所做的操作。从中可以获得如:changlist号、修改时间、修改文件的内容、修改原因及修改人等信息。 
       
3. Workspace工作区 :在该工作区中可显示所有连接在服务器上的客户端工作空间。 在此工作区内可以执行创建、编辑修改、删除用户工作空间等操作。(前提是有执行的权限。) 
       
4. History工作区 :查看指定文件的变更历史信息。

3.文件修改 

       1.1.每次要修改文件的时候,需要先check out 到本地,然后进行修改。 此时被Check Out出来的文件左上方有个红色钩标志,表明该文件已经成功的被您Check Out出来了。如果是文件的右上方有个蓝色钩标志,说明该文件已经被别人Check Out出来了。由于Perforce支持并行操作,所以您仍可以将别人已经Check Out的文件再次Check Out到您本机进行修改。 
       1.2.双击打开已经Check Out出来的文件,对其进行修改。 修改完毕后,右键点击该文件,选择Submit,写下变更列表的描述。 
       1.3.点击Submit,文件提交到服务器,增加了一个新版本。 在这里需要提醒大家的是,如果将某个文件Check Out出来后,并没有做任何修改,这时请不要做Submit操作,而是点击右键选择Revert If Unchanged,这样提交后就不会增加该文件的版本数了,否则服务器将会为一个没有做任何修改的文件增加一个版本。 
       建议在每次修改后思考:为什么要做这些修改?如果所作的修改是没有意义的,那么,建议不要将这个文件提交(submit),而是Revert你所做的修改。

4.合并文件 

       合并操作主要用来解决并行开发过程中变更产生的冲突。 (Check out --> Get latest --> Resove --> Accept Merge)
       例如,当有多人需要对同一个文件同时执行Check Out操作时,在Submit该文件时,Perforce可能会报错。现举例如下:有A、B两人需要同时对CallKeep.cpp文件执行Check Out操作。 此时可以看到文件CallKeep.cpp的左上角和右上角分别有钩,这说明该文件正在被至少两个人执行Check Out操作。由于Perforce支持并行操作,所以A和B在执行Check Out时不会发生冲突,但Submit该文件时就可能报错了。第一个执行Submit操作的人不会出现问题,例如A可以正常提交,但如果B修改的内容和A修改的相冲突,则B执行Submit时报错,并且会提示服务器上已经有最新的版本了(即A刚刚提交的版本) 。这时,选中该文件,右键点击,选择Resolve操作。 Perforce提供了三种自动解决方案,分别是“Accept Merged”、“Accept Yours”和“Accept Theirs”。当然,你也可以查看和别人冲突的地方在哪里,进行手动解决冲突。点击Run Merge Tool,显示界面从左到右。 
区域1:显示的是A提交版本中的内容,即目前服务器上的最新版本。 
区域2:显示的是A和B同时Check out文件CallKeep.cpp时,当时服务器上最新版本内容,也就是A、 
B修改的基础版本。 
区域3:显示的是B自己修改的文件内容。 
区域4:显示了三个版本所有冲突的地方,B可以在此基础上对文件做修改,给出解决方案。 
选择红线框中的按钮来决定所保留的代码。解决完冲突后再Submit即可。

5.查询文件历史版本 

       1.1. 如果想要查询某个文件的任何一个历史版本,右键点击这个文件,选择Get Revision。 如果不能Get下來,需要勾選Force Operation。
       1.2. 写下需要查看的历史版本号,然后点击Get Revision。此时Perforce为您取出任何一个你想要的历史版本。

6.比较两个文件的区别 

       比较操作主要是用来查看某个文件到底做了哪些修改:从中你可以看出添加了什么,删除了什么等等。 
       1.1. 比较两个不同文件或一个文件不同版本之间的区别。右键点击需要比较的文件,
选择Diff Against命令。 

7.同步服务器上文件 

       如果您在服务器上找到自己所需要的文件,并希望把这些文件同步到本机,这时就需要首先选择好工作区Workspace,然后右键点击需要下载的文件夹,选中Get Lastest Revision命令,就可以完成。

8.對比服務器與本地文件的差異

       選擇需要對比的目錄,選擇Reconcile Offline Work...

 9. P4常用命令

命令解释
p4 diff -se …查看当前目录下的编辑文件
p4 filelog file查看file的日志
p4 changes -m 5 file查看file最近5条日志
p4 diff file#1file与其库中版本#1
p4 reconcile …离线工作之后,p4 reconcile可查看文件增删改状态,p4 changelist可再次查看
p4 have file查看最新版本
p4 reopen -c id file指定文件重新加入指定change list, 此命名前先使用p4 change生成CL号
p4 opened查看change list中已打开未上传的文件
p4 changes -m1 …#have查看本地库当前CL号
p4 sync -f …@CL强制覆盖还本地文件
p4 revert -c default //…Revert every file open in the default changelist to its pre-opened state.
p4 revert -n ... #恢复所有打开却没提交的文件
p4 shelve -c CLCL上传到shelve
p4 shelve -d -c CL上传前需删除shelve
p4 unshelve -s CLunshelve到当前client
p4 shelve -f -c CL有新文件加入已shelved的CL后,需要用-f重新提交
p4 describe -s CL查看对应CL提交log
p4 submit -d "some description" file提交(check in)已经编辑好的文件
p4 cstat ...查看当前worspace的所有的CL,已下载的和未下载的

1)p4 opened
2)p4 change 

3)p4 submit -c
CL

4)p4 opened
如果 edit 了多个文件,eg: a,b,c,d. 但是只需要上传其中的部分文件, eg: a,b.
1)显示 a b c d 四个文件被编辑
2)通过p4 change,得到一个change list (eg:116119), 并自动生成打开一个 vim 文件,编辑文件,把不需要的文件 c d 从vim里去掉,添加description, 保存并退出。
3)CL为刚才得到的change list, 比如 116119, 我需要输入命令p4 submit -c 116119, 就会把需要上传的 a b 上传
4)此时会发现, 只有c d 还在, a b 已经被上传
斜体部分为变量
file   : file name
CL :  change number

 类似资料: