25

Perforce 有什么好处?

我很想了解 Perforce 如何在特定情况下比 Subversion 更好地工作。

如果您有使用 Perforce 和 Subversion 的经验,并且您不相信有任何优势,或者认为 svn 比 Perforce 有优势,我也想知道为什么。

4

9 回答 9

21

我与 Perforce 以及 Clearcase、Sourcesafe、RCS、PVCS、CVS 和 Subversion 合作多年。最近我也开始使用 GIT。

根据这次经验,我认为,对于大多数用途,Perforce 是商业环境中最好的版本控制系统。虽然最初不像 Subversion 那样简单,但它具有许多更强大的功能,尤其是在分支和合并方面。“默认锁定”方法通常更适合这种环境。

对于个人资料、小型协作项目、小型初创企业或开源项目,我发现 Subversion 在许多情况下更适合。他们有不同的方法,不同的工作方式。你不能只是把它们按比例排列,然后说哪个是最好的。

那就是说我讨厌 ClearCase。ClearCase 通常是从上面强制下来的(即管理决策)。

对于 Subversion 胜过 Perforce 的许多情况,如今许多人似乎更喜欢 GIT、Bazaar、Mercurial 等分布式系统。从我对 GIT 的了解来看,他们很可能是对的,我相信其他海报也会证明这一点。

于 2008-10-30T09:01:08.390 回答
16

Perforce 的一大卖点是速度。服务器跟踪客户端上文件的状态;因此,诸如“获取仓库的最新状态”之类的操作是微不足道的——服务器已经知道您拥有哪些文件,并且它可以将最少量的信息发送回您。

这个优点也带来了一个缺点,如果你在本地编辑文件而不先检查它们,在本地移动文件而不执行集成,或者在本地删除文件,服务器和客户端可能会不同步。

因为 Perforce 服务器只向客户端发送最少量的数据,所以 Perforce 在慢速链接上表现良好,例如美国的客户端访问伦敦的仓库的情况。话虽如此,Perforce 协议相对“健谈”,因此很容易因拥塞链接而减速。

于 2008-10-30T16:41:08.057 回答
11

我每天在工作中使用 perforce,我不会向任何人推荐它。我敢肯定它可能多年来最好的 SCM,但它的核心模型已经过时了。

Perforce 可能是我用过的最集中的 SCM 系统。想象一下,他们为没有在您的磁盘上缓存任何内容而感到自豪。进行同步很烦人,因为在很多情况下,除非您不进行强制同步,否则它什么也不会做 - 并且强制同步确实会将所有内容从服务器复制回您 - 如果您的项目是 10GB,它将复制所有内容.

我以前有使用 SourceSafe、CVS、SVN、Mercurial 和 git 的经验(后两者较少)。

我认为大多数开源 SCM 都是成熟的,您可以选择其中之一。如果你想要集中的东西,就选择 SVN,如果你想要分散的东西,使用 Mercurial(我在 Windows 上使用 git 的经历很糟糕)。

我在 perforce 上遇到的其他一些问题:

  • 你提交的不是你得到的:例如,如果你在 Intel Mac 上提交一个 UTF16 文件并从另一个 PPC Mac 同步它,你会得到另一个 UTF16 文件,因为 perforce 很聪明,并且确实将你的文件转换为客户端字节-订购。UTF16-BE - UTF16-LE?!
  • perforce 的脚本编写难度是其他工具的 10 倍。
  • 如果您开始使用它并通过脚本将其与您的流程联系起来,您可能会死于它,因为一切都是以 perforce 方式和 perforce 方式完成的:(
  • 很容易关闭 p4 服务器的图像:只需在项目的根目录上进行同步。在我工作的地方,这是不允许的,因为它会导致发球失败!有一个监视脚本正在监视 perforce 服务器进程,如果其中一个正在占用 x GB 的 RAM,它会杀死它并向您发送通知。是的,在客户端执行一个简单的命令,可以在 5-10 秒内在服务器上创建一个 3GB 的进程。
于 2009-07-29T09:26:01.193 回答
8

Perforce 的模型与 svn 有点不同。每个文件始终锁定在您的工作副本中,您必须声明强制您开始编辑它。例如,这样做的好处是您可以随时查看还有谁在处理文件。

总而言之,与其他 SCM 的差异并不是很大。你在很多地方都会遇到 Perforce,因为它曾经是少数(如果不是唯一的)部分体面的 SCM 之一,可以在 Windows 和 Mac 上运行。

如果我没记错的话,您可以在有限数量的客户中免费使用它,这样您就可以毫无痛苦地试用它......

于 2008-10-30T08:47:59.103 回答
7

就个人而言,我鄙视强制执行。它的用户界面很糟糕,很复杂,而且根本不直观。它是越野车并且经常崩溃。

我以前使用过 SVN(通过 Tortoise SVN),发现它更加简单和友好。

当然所有这些都是从用户的角度来看,可能SCM有不同的角度

于 2008-10-30T08:27:55.400 回答
4

您可能会在使用 Perforce 而不是 Subversion 的好处是什么中找到提示?(只需按照您的 Perforce 标签...)。

我们在工作中使用 Perforce,虽然我对各种 SCM 软件几乎没有经验,但我发现这个做得很好,具有良好的 GUI(在 Windows 上)、良好的命令行支持、许多不错的功能......可能需要一段时间才能完成习惯它的逻辑,但我认为对于大多数 SCM 来说可能都是正确的。

于 2008-10-30T09:19:29.990 回答
4

Perforce 支持锁定,并且对于某些无法合并的文件类型(二进制资源、思考图像等)似乎需要它。但是,它不需要对普通源文件进行锁定,这些源文件可以被多个用户同时打开进行编辑,然后合并回软件仓库。

我发现 Perforce 的系统带有“更改列表”,该组更改为多个文件并将它们视为一个单元,很好。我相信你可以用 SVN 做一些类似的事情,但它并不是那么容易开箱即用。

于 2008-10-30T08:47:30.320 回答
2

我同意之前的 Yuval - 在 GUI 和命令行模式下使用过 Perforce 和 svn,我更喜欢 svn。然而,我当时工作的公司从它使用的免费 cvs 切换到了 Perforce。它的 GUI 更加华丽。我认为它的提交模型是不同的——它使用锁定,这可能比某些开发人员/经理更可取。在商业环境中,为您的版本控制工具配备支持人员也可能会有所帮助。我听说在一些大公司中,在生产环境中使用开源代码是被禁止的,因为他们希望能够获得对每一行代码的支持。

于 2008-10-30T08:38:21.120 回答
-1

Perforce 服务器可以在客户端读取和写入任意文件,从而执行任意代码。Perforce 配置都是服务器端的,因此服务器可以简单地将客户端计算机的整个硬盘视为存储库,并对其进行任何操作。

除非在 SELinux 沙箱中,否则永远不要运行 Perforce。

记住:Perforce 客户端是服务器的傀儡。您必须使用操作系统的安全功能来防止它做您不希望它做的事情。始终将 Perforce 客户端视为敌对。

于 2014-12-20T05:28:02.373 回答