实习就要结束了,收获之一就是学会了使用Perforce!

Perforce SCM System是一款构建于可伸缩客户/服务器结构之上的软件配置管理工具。仅仅应用

TCP/IP,开发人员就能够通过多种Perforce客户端(几种平台的GUI、WEB、或命令行)访问

Perforce服务器。Perforce能够被快速和容易地部署,即使对大型或分布式的站点,也只要求最小限

度的管理。Perforce可以使用在50多个操作系统中,它包括版本控制、工作空间管理、变更处理和

一个强大的分支模型。这里介绍的P4V是perforce的一种可以跨平台使用的客户端。

和其他的版本控制工具一样,perforce也是基于CS架构,有一个中央服务器,其他客户端通过网络来连接,如下图:

1.服务器连接

填写正确的服务器名、端口、用户名及工作空间设置。

2.客户端主要工作区

上图所示的是Perforce的主界面,大部分的操作都是在该界面下完成的。该界面分为三个区域:

区域1:显示Deport以及Workspace中的内容,称为目录区。

区域2:列出文件的一些操作属性,称为操作区。

区域3:给出所执行操作的提示信息,称为信息区。

目录区

目录区由Depot目录区和Workspace目录区组成。

--->Depot目录区

显示了服务器上可见目录结构(用户权限设置不同,可见目录也不同),这也与Workspace View映

射文件路径有关系,可以指定显示文件路径。在这里,可以执行的操作包括: check out, submit,

Get Latest Revision, Revert Files等操作。

--->Workspace目录区

显示了与服务器上文件有映射关系的,本地工作空间的目录结构,这与Workspace View也有关系。

操作同上。

 操作区

操作区中的内容主要由如下的几种工作区组成。

---> Pending changelists 工作区

这里显示当前用户正在修改的文件和其他开发者正在修改的文件。

当然,你只需要关心你自己的project即可。当你执行:Mark for Add,check out等操作时,这些信息

就会显示在changlist列表中显示,并由不同的图标显示其状态。如果你修改完成后,执行submit就

可提交更新文件;但也可以执行revert放弃所作的修改。

--->Submitted changelists 工作区

显示了近期所有项目组成员对项目所做的操作。

从中可以获得如:changlist号、修改时间、修改文件的内容、修改原因及修改人等信息。

---> Workspace工作区
在该工作区中可显示所有连接在服务器上的客户端工作空间。
在此工作区内可以执行创建、编辑修改、删除用户工作空间等操作。(前提是有执行的权限。)

--->History工作区
查看指定文件的变更历史信息。

---> Labels工作区
查看目前所有的label号。
在此工作区中可完成label的创建,内容的修改等。(前提是有执行此操作的权限。)

--->Branchs工作区
查看目前所有的Branch号。
在此工作区中完成Branch的创建,修改、删除等。(前提是有执行此操作的权限。)

除了以上说明的几种工作区,还有Files、Jobs等工作区。包括上述的

六种在内,这几个工作区窗口可以通过界面上,如下图所示的选项卡相互切换:

 信息区
由一个窗口(Pane windows)组成。
Pane windows
这是一个非常有用的窗口,称之为消息窗口区,最底下的那个窗口就是。你的任何操作的信息都会

出现在这里,包括success, warning, error等信息。特别是执行某个操作失败后,这里的信息是至关

重要的。一般情况下,都可以根据这里的信息来处理一些意外情况或者是不规范操作。
3. Perforce的日常操作
3.1添加(Add)文件夹及文件
--->在Workspace中选定要添加的文件夹/文件上右击,选择“Mark for Add”,添加文件。

将添加文件行为显示在pending changelists工作区中。在工作区上增加好文件夹和文件后,图标上有

个红色的加号标志,表明此时增加的文件夹和文件还仅仅存在客户端的工作区中,还没有提交到服

务器上的仓库中。所以,右键点击需要提交的文件夹或文件,选择Submit,提交完毕后,文件此时

才真正提交到服务器上的仓库中。

--->提交(Submit)添加文件/文件夹
在Submit的过程中,需要写下该变更的描述,这点很重要!描述信息的详细,将大大的方便对文件

的查询和跟踪。且在描述的开头用英文说明此次操作行为的类型。如用Add表示添加;Modify表示

修改;Build表示编译等等。

点击Submit后,即可看到文件前面的红色加号已经去掉了,并且在Reversion栏中已经显示出该文件

的版本号。此时,文件的右下角有个绿色的标识,表示该文件当前显示的是最新版本。

3.2文件修改
如果需要对文件进行修改,首先将需要修改的文件Check Out出来到本机,才可以进行修改。
--->右键点击需要修改的文件,选择Check Out命令。

此时被Check Out出来的文件左上方有个红色钩标志,表明该文件已经成功的被您Check Out出来了

。如果是文件的右上方有个蓝色钩标志,说明该文件已经被别人Check Out出来了。由于Perforce支

持并行操作,所以您仍可以将别人已经Check Out的文件再次Check Out到您本机进行修改。

--->双击打开已经Check Out出来的文件,对其进行修改。
修改完毕后,右键点击该文件,选择Submit,写下变更列表的描述。

之后,选择save,然后发code review:

在同行审阅approve后,再提交。

ps:Collaborator是建立在CodeCollaborator基础之上的代码最全面审查工具,Collaborator能为开发团队轻松、有效地完成代码审查,

这使得实际中代码审查应用更大,自然能获得更好的代码。关键因素是用户体验,它允许团队其它成员为作者轻松、协作地提供反馈,跟踪每一条评论并采取应对措施。

3. 点击Submit,文件提交到服务器,增加了一个新版本。
在这里需要提醒大家的是,如果将某个文件Check Out出来后,并没有做任何修改,这时请不要做

Submit操作,而是点击右键选择Revert If Unchanged,这样提交后就不会增加该文件的版本数了,

否则服务器将会为一个没有做任何修改的文件增加一个版本。
建议在每次修改后思考:为什么要做这些修改?如果所作的修改是没有意义的,那么,建议不要将

这个文件提交(submit),而是Revert你所做的修改。
3.3 合并文件
合并操作主要用来解决并行开发过程中变更产生的冲突。
例如,当有多人需要对同一个文件同时执行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获得最新版本后再提交,仍报错。

且在文件上打个问号,说明服务器不知道该怎么办,因为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即可。

3.4查询文件历史版本
1. 如果想要查询某个文件的任何一个历史版本,右键点击这个文件,选择Get Revision。
2. 写下需要查看的历史版本号,然后点击Get Revision。

此时Perforce为您取出任何一个你想要的历史版本。

3.5比较两个文件的区别
比较操作主要是用来查看某个文件到底做了哪些修改:从中你可以看出添加了什么,删除了什么等

等。
---> 比较两个不同文件或一个文件不同版本之间的区别。右键点击需要比较的文件,选择Diff

Files命令。

---> 按照下图所示,设置需要比较的文件名称或文件的版本等。

--->点击Diff就可以看到如下图所示的所有不同处,包括增加、删减或修改的操作。

在这里需要注意的是:Perforce暂时不支持多个文件的比较。

3.6 同步服务器上文件
如果您在服务器上找到自己所需要的文件,并希望把这些文件同步到本机,这时就需要首先选择好

工作区Workspace,然后右键点击需要下载的文件夹,选中Get Lastest Revision命令,就可以完成

文件夹的同步操作了。

有时候同步不到最新的版本,可以选择force操作:

3.7 获取Label标识版本文件
提取出标记特定label下的文件。
--->在工具栏上找到的标识,在右上方的Labels工作区中找到所需的label号。

---> 获取指定label下特定文件。 右键选中指定label,在菜单中选择“Get Revision...”。

---> 在弹出的如下对话框中,选择需要签出的文件。

---> 点击“Add”按钮,选择添加标记该label的文件。

整理使用perforce过程中的几个问题:

question1:How to delete a workspace in Perforce (using p4v)?

I'm new to Perforce and have created a few workspaces as exercises for getting familiar with it. Now I would like to delete some of the workspaces. I just want to get rid of the workspaces so that they do not appear on the drop-down in the workspaces view (do not want to do anything with actual depot files).

Googling up an answer yields the suggestion to "make the workspace active" (I guess that means select it in the workspace dropdown?) and then delete it from the "edit" menu. Unfortunately, the delete option is grayed-out when I try this.

Anyone know how to do this, or do I just have to live with junk workspaces? I've physically deleted one of them from the disk, and it still appears in the workspace drop down, and I can't even synchronise it with the depot now, so I guess that's not how to do it.

solution:

In P4V click View > Workspaces

If the workspace to be deleted is not visible in the list you may have to uncheck the box Show only workspaces available for use on this computer

Right-click the workspace to be deleted and choose Edit Workspace 'My_workspace'

On the Advanced tab uncheck the box Locked: only the owner can edit workspace settings > then click OK

Now back on the Workspaces tab of Perforce right-click the workspace to be deleted and chooseDelete Workspace 'My_workspace'

P4V should remove the item from the drop-down list when clicking on it.

There is a case where a previously deleted workspace remains in the drop-down list, and P4V displays the following error:

P4V Workspace Switch Error. This workspace cannot be used on this computer either because the host field does not match your computer name or the workspace root cannot be used on this computer.

If this error occurs, the workspace(possibly on another host) may have only been unloaded. Click the P4V Workspaces Recycle bin

In the resulting Unloaded Workspaces window right-click the offending workspace and chooseDelete Workspace 'My_workspace'. P4V should now remove the workspace item from the drop-down list.

 

谈谈Perforce的更多相关文章

  1. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  2. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  3. 谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  4. 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  5. 谈谈如何使用Netty开发实现高性能的RPC服务器

    RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协议.说的再直白一点,就是客户端在不必知道 ...

  6. 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  7. 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  8. 谈谈一些有趣的CSS题目(五)-- 单行居中,两行居左,超过两行省略

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  9. 谈谈一些有趣的CSS题目(六)-- 全兼容的多列均匀布局问题

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

随机推荐

  1. [Js/Jquery]天气接口简单使用

    写在前面 今天在群里有朋友使用一个天气api,觉得挺实用的,就记录一下.省的以后再花费功夫去找. 地址:http://www.k780.com/api,在这个网站提供了实用的几种接口,比如查询ip,天 ...

  2. Java NIO 与 基于reactor设计模式的事件处理模型

    Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内 ...

  3. 一个有趣的Ajax Hack示范

    今天在梦之光芒的BLOG上看见了一个Ajax Hack示范,其实跨站发现很容易,但是要做到大危害还是很难,偷偷COOKIE什么的只针对用户而已,XSS WORM的那种利用才是可怕的. 来看看他的一段V ...

  4. 对drupal的理解【转】

    写本文是想跟刚用drupal的朋友,分享一下心得,国内用drupal的太少了,希望大家能好好交流. 希望几分钟看完后你能马上上手drupal,至少能理解hook,api,theme,module,cc ...

  5. 项目中用到的SQL-总结

    基本sql总结: Group by的理解:having子句,分组函数 Group by使用的限定: 1.出现在Select列表中的字段或者出现在order by后面的字段,如果不是包含在分组函数中,那 ...

  6. Lucene基于IKAnalyzer配置的词典扩充

    在web项目的src目录下创建IKAnalyzer.cfg.xml文件,内容如下 <?xml version="1.0" encoding="UTF-8" ...

  7. 错误处理--pure specifier can only be specified for functions

    错误处理--pure specifier can only be specified for functions 今天下载了log4cpp的源代码,在VC6下编译时出现错误: ..\..\includ ...

  8. LINUX输入输出与文件——续

    1 目录操作 改变目录或文件的访问权限 #include <sys/stat.h> int chmod(const char *path, mode_t mode); //mode形如07 ...

  9. eclipse创建python项目

    http://jingyan.baidu.com/article/19192ad8173300e53f570757.html

  10. 小鲜肉初学JS做得仿京东淘宝竖排二级导航

    <!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equ ...