Perforce 软件配置管理系统

作者:Tom Bjorkholm
  • 制造商:Perforce Software, Inc.

  • 电子邮件:info@perforce.com

  • 网址:http://www.perforce.com/

  • 价格:500 美元(非商业用途免费)

  • 评测人:Tom Björkholm

我们中的许多人在谈论“版本控制系统”时,实际上指的是软件配置管理系统。我们大多数人对这些系统都有复杂的感情。我们想要它们带来的好处:跟踪、分支、回退到旧版本以及其他此类选项。但是,我们不想支付通常的开销、复杂性和额外工作来设置和使用系统。我们真正想要的是一个快速、易于理解的系统,它可以给我们带来所有好处,而没有任何痛苦。

Perforce 软件包在很大程度上实现了这些目标。在销售材料中,Perforce 据说是“比 Kleenex 更容易使用,运行速度比红色保时捷更快……” 让我们检查一下这种说法是否有效。

安装

Perforce 系统是一个客户端/服务器系统,只有两个二进制文件。 p4 二进制文件是客户端程序。在 Linux/Intel 上,p4 二进制文件只有 55KB。服务器程序 p4d 只有 388KB。这些文件是您唯一需要的。但是,最好也获取手册页 p4.1 和 p4d.1,以及手册(PostScript 文件)。您可以在 http://www.perforce.com/ 找到所有这些文件。

服务器程序 p4d 像守护进程一样启动,不需要以 root 用户身份运行。就我个人而言,我发现创建一个名为 Perforce 的特殊用户,并在其主目录中运行服务器程序是一个好主意。此用户不是必需的,但它肯定有助于保持系统井井有条。

安装 Perforce 很简单。首先,需要将客户端程序复制到默认路径中的位置(例如,/usr/local/bin)。然后,需要在系统启动时通过 rc 文件启动服务器程序 p4d,并在系统关闭时停止。这些程序在其环境中不需要任何特殊的东西。

基本思想

Perforce 基于真正的网络客户端/服务器方法。为了完成工作,客户端程序连接到服务器上的 TCP 端口。因此,您只需要从客户端到服务器的 TCP 路由即可。不需要 NFS 挂载的文件系统。

用户在本地文件上完成所有工作(例如编辑和编译)。这些文件通过一些简单的 p4 命令与服务器保持同步。

Perforce 的每个用户都是一个客户端,并拥有存储在服务器中的客户端视图。客户端视图由服务器用于确定客户端需要服务器数据库中的哪些文件,以及客户端希望这些文件的本地名称是什么。可以使用 p4 client 命令更改客户端视图。服务器的文件数据库在 Perforce 中称为“仓库”。

Perforce 中一个有趣的想法是变更的概念。每次您提交一个或多个文件时,都会创建一个新的编号变更。例如,错误修复可能需要您编辑多个文件。通过将这些文件一起作为单个变更提交,您可以记录在这些文件中进行的编辑对应于对系统的单个变更。变更具有描述,您可以输入您更改了什么以及为什么更改的文本描述。变更已编号,因此较新的变更始终具有更高的编号。

您可以通过 3 种方式使用 Perforce 识别文件的版本

  1. 您可以说 foo.c#版本,其中版本是文件特定的版本号。

  2. 您也可以说 foo.c@变更,其中变更是仓库范围的变更号。即使 foo.c 仅在变更 110 和 120 中更改过,foo.c@115 也是有效的标识符。在这种情况下,foo.c@115 指的是在变更 110 中更改的 foo.c 版本,即提交变更 115 时有效的 foo.c 版本。

  3. 与许多其他系统一样,Perforce 也有标签。因此,识别版本的第三种方法是 foo.c@标签。

易用性

使用 Perforce 的正常工作是通过以下命令完成的

  1. p4 add 通知 Perforce 工作区中的本地文件将添加到仓库中的文件。 p4 add 仅注册您添加文件的意图,实际添加由命令 p4 submit 完成。

  2. p4 edit 用于打开现有文件进行编辑 — p4d 服务器被告知您将要编辑该文件。在许多其他系统上,此过程称为检出。更改实际上是由 p4 submit 命令进行的。

  3. p4 submit 为前两个命令完成实际工作。

  4. p4 get 用于从仓库获取文件到本地工作空间。

  5. p4 revert

除了用于编辑的常规命令外,还有相当多的报告命令,例如 p4 describe 用于了解有关变更的更多信息,以及 p4 filelog 用于列出文件的历史记录。所有这些命令都易于使用且直观。还有一个 p4 help 命令,以及手册页。

分支

Perforce 的特别优点之一是它处理分支的方式,称为“文件间分支”。

在许多其他系统中,分支规范在某种程度上是版本编号或版本选择机制的一部分。这是违反直觉的,并且常常是造成混乱的原因。其他系统也对单个文件进行分支。

Perforce 以您在没有代码管理系统的情况下使用分支命名的方式处理分支命名。在 Perforce 中,目录 my_project/new_branch/ 包含 my_project/old_branch 的新分支。通过将分支命名作为目录树结构的一部分,Perforce 创建了一种非常自然的方式来与分支交互和思考分支。

通过这种方式,为整个项目同时创建分支,而不仅仅是为单个文件创建分支。此方法还有助于保持分支的一致性。服务器中的复制算法可防止此方法比其他方法使用更多的磁盘空间。

上面,我已经描述了 Perforce 分支机制的正常使用。但是,Perforce 分支机制甚至更强大。可以指定文件树或单个文件是彼此的分支。甚至可以将两个完全不相关的文件或目录树指定为分支,并在它们之间迁移更改。

分支的规范是通过分支视图完成的。分支视图可以包含两个分支中文件名之间的简单或任意复杂的映射。

Perforce 使用强大的命令 p4 integp4 resolve 来集成分支之间的更改并解决冲突。

速度

Perforce 是一个非常快速的代码管理系统。代码管理操作(例如标记、检入 (P4 submit) 和检出 (p4 edit))比另一个代码管理系统 ClearCase 快几个数量级。

使用 Perforce,所有正常工作(例如编辑和编译)都在您工作区的本地文件上完成,这使得 Perforce 比大多数其他系统快得多。

高级用法

Perforce 有许多高级功能。我无法在此处列出所有功能(更不用说描述所有功能),但我将提及一些功能。

Perforce 可以具有分布式仓库。您可以在 WAN 上运行 Perforce,甚至可以在 Internet 上加密运行它。您可以将 Perforce 与 IP 隧道和防火墙一起使用。 Perforce 可以为外部进程设置变更提交触发器。

Perforce 支持离线客户端。也就是说,可以断开客户端计算机的连接,并对工作空间中的本地文件进行更改,然后让 Perforce 检测更改并将它们带入仓库。

许可

您可以从 ftp://ftp.perforce.com/ 下载除许可证文件之外的所有 Perforce 文件。许可证文件决定了服务器接受多少用户。如果没有许可证文件,则只能有 2 个用户。购买 Perforce 的成本(即许可证文件)为 500 美元/用户。如果您购买 Perforce,他们会通过电子邮件将许可证文件发送给您。 Perforce 宣布

Free-BSD 和 LINUX 的非商业用户可以免费获得支持无限数量最终用户的 Perforce 服务器。这包括升级,但不包括支持。需要执行 Perforce 非商业许可协议。

在回答一个直接问题时,Perforce 的 Christopher Seiwald 说

我们不能保证为非商业用户提供支持,但我们尽量不歧视商业用户、评估用户和非商业用户。

Perforce 适用于 Linux x86 和 Linux Alpha,以及 Free-BSD 和许多商业系统。
支持

Perforce 为我提供了出色的支持。无论问题多么荒谬,或者我尝试的任务多么荒谬,我总能在 18 小时内通过电子邮件收到很好的答复。 Perforce 拥有非常好的电子邮件支持。我在网上询问了 Perforce 的其他客户,他们都很满意。

结论

我曾在专业领域(参见“MYDATA 的工业机器人”,LJ 第 39 期,1997 年 7 月)和作为家庭爱好程序员使用过 Perforce。我发现 Perforce 是一款不错的产品,并且提供良好的支持。与我专业使用过的其他 CM 产品相比,我发现它们非常差。

Perforce 不仅是一款技术上出色的产品,而且易于使用且直观。考虑到 Perforce 优惠的许可政策,我建议您下载 Perforce 并亲自测试一下。

Perforce Software Configuration Management System
Tom Björkholm 是爱立信商业网络的软件工程师。除了作为用户外,他与 Perforce 没有联系。他自 0.95 版本以来一直使用 Linux。在不编程的时候,他喜欢航海。他欢迎发送至 tom.bjorkholm@swipnet.se 的评论。
加载 Disqus 评论