第一章 前言
Perforce SCM System是一款构建于可伸缩客户/服务器结构之上的软件配置管理工具。仅仅应用
TCP/IP,开发人员就能够通过多种Perforce客户端(几种平台的GUI、WEB、或命令行)访问
Perforce服务器。Perforce能够被快速和容易地部署,即使对大型或分布式的站点,也只要求最小限
度的管理。Perforce可以使用在50多个操作系统中,它包括版本控制、工作空间管理、变更处理和
一个强大的分支模型。这里介绍的P4V是perforce的一种可以跨平台使用的客户端。
1.1. Perforce结构
第二章 Perforce使用介绍
2.1客户端配置
2.1.1. 服务器连接
1.是首次在您的机器上使用P4V,那开始会出现如下的创建工作空间窗口。选择“Create a new client
workspace”,在你的本地机器上创建你的第一个工作空间。
2.在菜单栏上,选择“Connection”下拉菜单中的“open Connection”选项。
3.弹出如下配置窗口,按如下配置填写正确的服务器名、端口、用户名、密码及工作空间设置。
4.在这里需要强调的是,登录时请务必填写Workspace的内容,否则Perforce的一些操作无法正常执行。如果还没有创建Workspace,请点击New,界面如下:
5.在此填入您在自己机器上所新建的工作区名称,并在如下图所示窗口中设置本地目录等信息:
如下:
注意将“Option”的“modtime”选项选中。
1.填写完成后,提交确认(OK), 开始连接相应的服务器。
2.1.2 客户端上配置
1. 设置①:下次打开P4时,自动定位到上次退出时的路径。
2. 设置②:Submit时,不选择未修改的文件,只提交修改过的文件。但对于未修改的文件
还是要手动Revert。
(此功能还可以通过在pending changelist框中全选提交文件,右击,选择菜单“Revert If Unchanged”
完成。)
3. 设置③:当打算CHECK OUT已被别人CHECK OUT的文件时,会给出提示。
(但如果是对目录CHECK OUT,则不会提示)
2.1.3 客户端主要工作区
上图所示的是Perforce的主界面,大部分的操作都是在该界面下完成的。该界面分为三个区域:
区域1:显示Deport以及Workspace中的内容,称为目录区。
区域2:列出文件的一些操作属性,称为操作区。
区域3:给出所执行操作的提示信息,称为信息区。
2.1.3.1 目录区
目录区由Depot目录区和Workspace目录区组成。
1.Depot目录区
显示了服务器上可见目录结构(用户权限设置不同,可见目录也不同),这也与Workspace View映
射文件路径有关系,可以指定显示文件路径。在这里,可以执行的操作包括: check out, submit,
Get Latest Revision, Revert Files等操作。
2 Workspace目录区
显示了与服务器上文件有映射关系的,本地工作空间的目录结构,这与Workspace View也有关系。
操作同上。
2.1.3.1 操作区
操作区中的内容主要由如下的几种工作区组成。
1. Pending changelists 工作区
这里显示当前用户正在修改的文件和其他开发者正在修改的文件。
当然,你只需要关心你自己的project即可。当你执行:Mark for Add,check out等操作时,这些信息
就会显示在changlist列表中显示,并由不同的图标显示其状态。如果你修改完成后,执行submit就
可提交更新文件;但也可以执行revert放弃所作的修改。
2. Submitted changelists 工作区
显示了近期所有项目组成员对项目所做的操作。
从中可以获得如:changlist号、修改时间、修改文件的内容、修改原因及修改人等信息。
3. Workspace工作区
在该工作区中可显示所有连接在服务器上的客户端工作空间。
在此工作区内可以执行创建、编辑修改、删除用户工作空间等操作。(前提是有执行的权限。)
5. Labels工作区
查看目前所有的label号。
在此工作区中可完成label的创建,内容的修改等。(前提是有执行此操作的权限。)
6. Branchs工作区
查看目前所有的Branch号。
在此工作区中完成Branch的创建,修改、删除等。(前提是有执行此操作的权限。)
除了以上说明的几种工作区,还有Files、Users、Jobs、Details以及Fild files等工作区。包括上述的
六种在内,这几个工作区窗口可以通过界面上,如下图所示的选项卡相互切换:
2.1.3.3. 信息区
由一个窗口(Pane windows)组成。
Pane windows
这是一个非常有用的窗口,称之为消息窗口区,最底下的那个窗口就是。你的任何操作的信息都会
出现在这里,包括success, warning, error等信息。特别是执行某个操作失败后,这里的信息是至关
重要的。一般情况下,都可以根据这里的信息来处理一些意外情况或者是不规范操作。
2.2. Perforce的日常操作
2.2.1. 添加(Add)文件夹及文件
1. 在Workspace中选定要添加的文件夹/文件上右击,选择“Mark for Add”,添加文件。
将添加文件行为显示在pending changelists工作区中。在工作区上增加好文件夹和文件后,图标上有
个红色的加号标志 ,表明此时增加的文件夹和文件还仅仅存在客户端的工作区中,还没有提交到服
务器上的仓库中。所以,右键点击需要提交的文件夹或文件,选择Submit,提交完毕后,文件此时
才真正提交到服务器上的仓库中。
2. 提交(Submit)添加文件/文件夹
在Submit的过程中,需要写下该变更的描述,这点很重要!描述信息的详细,将大大的方便对文件
的查询和跟踪。且在描述的开头用英文说明此次操作行为的类型。如用Add表示添加;Modify表示
修改;Build表示编译等等。
点击Submit后,即可看到文件前面的红色加号已经去掉了,并且在Reversion栏中已经显示出该文件
的版本号。此时,文件的右下角有个绿色的标识,表示该文件当前显示的是最新版本。
2.2.2. 文件修改
如果需要对文件进行修改,首先将需要修改的文件Check Out出来到本机,才可以进行修改。
1. 右键点击需要修改的文件,选择Check Out命令。
此时被Check Out出来的文件左上方有个红色钩标志,表明该文件已经成功的被您Check Out出来了
。如果是文件的右上方有个蓝色钩标志,说明该文件已经被别人Check Out出来了。由于Perforce支
持并行操作,所以您仍可以将别人已经Check Out的文件再次Check Out到您本机进行修改。
2. 双击打开已经Check Out出来的文件,对其进行修改。
修改完毕后,右键点击该文件,选择Submit,写下变更列表的描述。
3. 点击Submit,文件提交到服务器,增加了一个新版本。
在这里需要提醒大家的是,如果将某个文件Check Out出来后,并没有做任何修改,这时请不要做
Submit操作,而是点击右键选择Revert If Unchanged,这样提交后就不会增加该文件的版本数了,
否则服务器将会为一个没有做任何修改的文件增加一个版本。
建议在每次修改后思考:为什么要做这些修改?如果所作的修改是没有意义的,那么,建议不要将
这个文件提交(submit),而是Revert你所做的修改。
2.2.2.1. 合并文件
合并操作主要用来解决并行开发过程中变更产生的冲突。
例如,当有多人需要对同一个文件同时执行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刚刚提交的版本)
且在文件上打个问号,说明服务器不知道该怎么办,因为B需要提交的版本内容和A的相冲突,需要
B给予解决。
这时,选中该文件,右键点击,选择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即可。
2.2.3. 查询文件历史版本
1. 如果想要查询某个文件的任何一个历史版本,右键点击这个文件,选择Get Revision。
2. 写下需要查看的历史版本号,然后点击Get Revision。
此时Perforce为您取出任何一个你想要的历史版本。
2.2.4. 比较两个文件的区别
比较操作主要是用来查看某个文件到底做了哪些修改:从中你可以看出添加了什么,删除了什么等
等。
1. 比较两个不同文件或一个文件不同版本之间的区别。右键点击需要比较的文件,选择Diff
Files命令。
3. 点击Diff就可以看到如下图所示的所有不同处,包括增加、删减或修改的操作。
在这里需要注意的是:Perforce暂时不支持多个文件的比较。同时,如果在进行两个文件比较时,
文件的大小超过2MB,Perforce也会报错,出现以下所示界面:
请大家在操作过程中注意!
2.2.5. 同步服务器上文件
如果您在服务器上找到自己所需要的文件,并希望把这些文件同步到本机,这时就需要首先选择好
工作区Workspace,然后右键点击需要下载的文件夹,选中Get Lastest Revision命令,就可以完成
文件夹的同步操作了。
2.2.6. 获取Label标识版本文件
提取出标记特定label下的文件。
1. 在工具栏上找到 的标识,在右上方的Labels工作区中找到所需的label号。
2. 获取指定label下特定文件。 右键选中指定label,在菜单中选择“Get Revision...”。
4. 点击“Add”按钮,选择添加标记该label的文件。
第三章 注意事项
1. 合并的Base File文件中一行的字数不可以超过6000个字符。否则会报错。
2. 在进行两个文件比较的时候,文件大小不要超过2MB,否则会保存错。
3. 关于check out
check out告诉服务器要修改指定文件,而实际上是把本地文件的属性从只读变为可写, 需要注意
的是千万不要手动去改文件信息,服务器并不会知道手工修改,这样只会带来不必要的麻烦,这些
信息会显示在pending changelists的defualt这个接点下面。
4. 关于文件删除
凡在Perforce上的任何删除操作,都由配置管理员统一操作完成。如有删除文件的需要,将需要删
除的文件的Perforce上路径发给配置管理员来完成。
5. 关于文件类型(file type)
在签入文件前,首先要查看所签入文件的类型是否包含在已设定文件类型中(可
在//depot/Misc/Types/typemap.txt文件中作查找),否则为包含的文件类型是不能成功加入perforce配
置库的。
第四章 服务端相关安装与配置
2.1. 安装步骤
1. 点击安装程序,出现如下界面,选择“User Installation”后,next继续安装。
2. 出现如下界面,选择需要安装的组件。选择全选。
除Username为用户本人名以外,其他配置信息如图。
4. 最后检查确认所填安装配置信息(包括安装路径、安装组件、服务器端口号、用户名等等
)后,点击“Install”开始安装。