Perforce有哪些优势?

时间:2008-10-30 08:24:52

标签: svn version-control perforce

Perforce有哪些好处?

我希望能够深入了解Perforce如何在特定情况下比Subversion更好地工作。

如果你有Perforce和Subversion的经验并且你不相信有任何优势,或者相信svn比Perforce更有优势,我也想知道原因。

9 个答案:

答案 0 :(得分:20)

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

根据这一经验,我的观点是,对于大多数用途,Perforce是商业环境的最佳版本控制系统。虽然不是那么简单,但最初,作为Subversion,它具有许多更强大的功能,特别是在分支和合并方面。 “默认锁定”方法通常更适合此环境。

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

那说我讨厌ClearCase。 ClearCase通常被迫从上面(即管理决策)。

对于Subversion胜过Perforce的许多案例,很多人似乎更喜欢像GIT,Bazaar,Mercurial这样的分布式系统。从我所看到的GIT来看,他们可能是对的,我相信其他海报也会证明这一点。

答案 1 :(得分:15)

Perforce的一大卖点是速度。服务器跟踪客户端上文件的状态;因此,像“让我了解仓库的最新状态”这样的操作是微不足道的 - 服务器已经知道你有什么文件,它可以将最少量的信息发回给你。

这一优势还带来了一个缺点,即如果您在本地编辑文件而不先检出文件,在本地移动文件而不进行集成或在本地删除文件,服务器和客户端可能会失去同步。

由于Perforce服务器仅向客户端发送最少的数据,因此Perforce在慢速链接上表现良好,例如美国的客户端访问伦敦的软件仓库。话虽如此,Perforce协议相对“聊天”,因此很容易因拥挤链接而减速。

答案 2 :(得分:12)

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

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

我之前有过使用SourceSafe,CVS,SVN,Mercurial和git的经验(最近两次)。

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

我对perforce的其他一些问题:

  • 你提交的不是你得到的东西:例如,如果你在英特尔Mac上提交一个UTF16文件并从另一个PPC Mac同步它你会得到另一个UTF16文件,因为perforce是聪明的并且确实将你的文件转换为客户端字节排序。 UTF16-BE - UTF16-LE?!
  • 脚本perforce比其他工具难度高10倍。
  • 如果您开始使用它并通过脚本将其绑定到您的流程,可能您会因此而死,因为一切都是以强制方式完成的:(
  • 想要下载p4服务器非常容易:只需在项目的根目录上进行同步即可。在我工作的地方这是不允许的,因为它可以降低服务!有一个监视脚本正在监视perforce服务器进程,如果其中一个正在接管x GB的RAM,它会杀死它并向您发送通知。是的,在客户端上执行一个简单命令可以在5-10秒内在服务器上创建3GB进程。

答案 3 :(得分:8)

Perforce的模型与svn有点不同。每个文件始终锁定在您的工作副本中,您必须声明强制您将开始编辑它。 这有例如您可以随时立即查看其他人正在处理文件的优势。

与其他SCM的所有差异都不是很大。你在许多地方遇到Perforce,因为它曾经是为数不多的(如果不是唯一的)部分体面的SCM在Windows和Mac上工作的。

如果我没弄错的话你可以免费使用有限数量的客户,所以你可以毫不费力地尝试一下......

答案 4 :(得分:7)

就个人而言,我鄙视perforce。它的用户界面非常糟糕,复杂,而且非常直观。它经常发生故障并且经常崩溃。

之前我曾与SVN合作过(通过Tortoise SVN)并且发现它更简单友好。

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

答案 5 :(得分:4)

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

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

答案 6 :(得分:4)

您可能会在What are the benefits of using Perforce instead of Subversion?中找到提示(只需关注您的Perforce代码......)。

我们在工作中使用Perforce,虽然我对各种SCM软件几乎没有经验,但我觉得这个很好,有一个很好的GUI(在Windows上),良好的命令行支持,很多很棒的功能......可能需要一段时间习惯了它的逻辑,但对于大多数SCM来说,我认为可能是这样。

答案 7 :(得分:2)

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

答案 8 :(得分:0)

Perforce服务器可以在客户端上读写任意文件,从而执行任意代码。 Perforce配置全部是服务器端,因此服务器可以简单地处理整个硬盘客户'计算机作为存储库,并且无论它想要什么。

除SELinux沙箱外,切勿运行Perforce。

请记住:Perforce客户端是服务器的傀儡。您必须使用操作系统的安全功能,以防止它执行您不想要的操作去做。 始终将Perforce客户端视为敌对客户。