使用Perforce而不是Subversion有什么好处?

时间:2008-10-01 12:52:46

标签: svn perforce

我的团队已经使用SVN几年了。我们现在可以选择切换到Perforce。

进行这样的转换有什么好处(和陷阱)?

17 个答案:

答案 0 :(得分:49)

  • P4会在服务器上跟踪您的工作副本。这意味着
    1. 处理大型工作副本的速度要快得多。我曾经有一个大型的SVN项目和一个简单的更新花了15分钟,因为它必须创建一个本地工作副本的树(数千个文件夹)。文件访问速度很慢。 P4将有关工作副本的信息存储在数据库中,因此任何操作总是接近即时。
    2. 如果你弄乱你的文件并且不告诉服务器,那你就麻烦了!您不能只删除文件 - 您必须删除P4客户端的文件,以便服务器知道。请注意,如果您在本地删除文件,则在连续更新时不会再次下载该文件,因为服务器认为您已经拥有该文件!当很多这种情况发生并且我最终疯狂地不同步时,我通常不得不求助于清理我的本地副本并再次下载,这可能非常耗时。你必须小心这一点。
  • Explorer shell扩展客户端(想想TortoiseSVN)糟透了,完全无法使用。
  • 有两个GUI客户端应用程序提供最佳功能:P4Win和P4V,其中P4V更新,更易于使用,但功能不丰富。
  • 虽然它们没有很多高级功能,但Visual Studio和Eclipse插件工作得相对较好。
  • 一般来说,P4提供的功能远少于SVN,有时候会让人感到非常困惑。
  • 工作副本定义非常灵活。我相信P4在这里优于SVN:您可以为工作副本文件夹定义蒙版并创建各种奇怪的树,因此您只需要下载您想要的内容,而无需手动使用多个签出。当我在服务器上有数十亿字节的东西并且只想要它的特定子集时,这非常方便。我在类似的情况下使用SVN更麻烦。
  • P4下的分支是......奇怪的。分支集和不同种类的分支和令人困惑的UI。不幸的是,我不记得很多细节。

除此之外,它非常标准。

我建议您保留SVN,除非您处理大量代码库或讨厌乱丢文件系统的.svn文件夹。 SVN + TortoiseSVN在大多数情况下更加舒适。

答案 1 :(得分:43)

我目前在不同的项目中使用它们。

  • perforce分支机制优越。
  • perforce冲突解决工具更好。
  • 我非常喜欢perforce强烈的变更列表概念。
  • Perforce似乎更快。
  • 设置和运行更容易。
  • 我们的一些成员非常喜欢perforce的MS Office插件,我在Mac上,所以我无法使用它。

但是

  • SVN客户端更好,特别是eclipse插件。
  • Perforce更贵。

这些只是意见,所以这可能是一个糟糕的答案:)

如果我已经在使用其中一种,那么我很难切换,因为它们似乎都没有提供真正显着的好处,但转换的中断可能很大。

更新:自写这篇文章以来,我已完全转向使用GIT用于个人和商业用途。我会在任何一天通过SVN或Perforce选择它。

答案 2 :(得分:14)

您的团队是否评估过Git?它具有类似于Perforce中可用的功能,但是是免费的(FOSS)。

在与大型团队合作时,要么是SVN的绝佳替代品。

答案 3 :(得分:6)

在Perforce网站上,他们有一份文件比较两者: P4 vs SVN

显然,鉴于源代码,您必须意识到它强调Perforce优于SVN的优势,但它仍然是一个有用的读物​​。你永远不会知道,鉴于你自己独特的情况,你的团队可以从中受益的一个好处是其中一个好处。

我肯定会推荐Perforce,因为其他答案已经涵盖了很多原因,但是我无法与从未真正使用它的SVN进行比较。

答案 4 :(得分:6)

我在工作中使用perforce,在家里使用。

perforce GUI非常好,但只有在你习惯它之后。它肯定有一个学习曲线,当非程序员开始使用perforce时,通常需要一些时间才能获得概念。

乌龟很棒,很容易使用。我的律师妻子使用它来颠覆所有文件;)

分支很容易。事实上这么容易,人们分支的原因不是太多。然后你整合,因​​为你分支。它很容易成为你唯一做的事情。

Svn集成在更多产品中。至少我使用的产品。这是一个很大的优势,因为如果你必须在开发环境外部使用eithere,它们都会变得笨重。

我们每隔一段时间就会遇到问题,因为它认为您的本地副本是最新的,但事实并非如此。然后你必须强制同步,然后如果仍然不好,删除你的本地文件并重新同步。从来没有与svn有这样的问题。这实际上是一个很大的问题,因为你甚至不知道你正在处理旧版本。

要考虑的另一件事是你想改变的原因。如果你有一个有效的系统,每个人都熟悉它并对它感到满意,为什么要更换它呢?

答案 5 :(得分:4)

正确的分支和使分支机构成为命名空间的一部分是我在Perforce中看到的最大好处。合并很容易。我认为离开Subversion没有任何缺点。

答案 6 :(得分:2)

我已经使用了两者,根据我的经验,如果你有一个庞大的团队和/或代码库,Perforce会很有意义;否则我会选择SVN - 它更容易设置和维护。

答案 7 :(得分:2)

我使用SVN,不是很多,只是试一试。我使用Perforce大约三年。我以为很好。客户服务非常出色,能够快速解决问题,而这个问题恰好让我变得愚蠢,他们甚至实现了我建议的功能。

其他一些开发人员,特别是那些不得不使用它的非开发人员发现学习使用起来有点棘手,尤其是在定义客户端规范(服务器上的文件夹映射到本地文件夹)时。 p>

我发现将文件放入和取出非常快,并且非常可靠。我认为,一旦我们习惯了,我与之合作的大多数开发人员都非常喜欢它。我们在切换之前使用了Visual Source Safe,所以,几乎任何东西都比这更好。

下行,这需要花钱。我相信SVN是一个非常好的系统,因为SVN是免费的,我认为你必须有一个令人信服的理由转换特别是因为Perforce确实需要一段时间来学习。如果SVN正在为你做这份工作,而你没有任何关于它的投诉,我建议你继续使用它,并节省下雨天的钱!

答案 8 :(得分:2)

如果需要,您可以在Perforce中离线编辑内容。您的工作量定义文件是只读还是可写,因此您可以将它们全部写入,删除,然后让Perforce确定需要检查的内容。

最好让文件只读,并检查你需要什么,以便其他人(和你自己)知道你一直在做什么。

更好的系统取决于您的要求,如果您没有要求,则Perforce获胜。

谁使用Subversion?    小型非商业团队    廉价或小型商业团队

谁使用Perforce?    谷歌    索尼    三星    nVidia的    赛门铁克

答案 9 :(得分:2)

截至最近的版本,Perforce为shelving changes提供了一项新功能:

  

搁置是在Perforce Server上临时存储正在进行的工作而不提交更改列表的过程。当您需要在同一组文件中执行多个开发任务(例如来自更高优先级工作的中断,跨多个平台进行测试)或共享文件以进行代码审查之前,搁置非常有用。在将工作提交到软件仓库之前。

这与git的分支模型类似,当您需要多任务时,它可以让您毫不费力地从一个本地分支切换到另一个本地分支。

AFAIK,Subversion没有类似的功能。

More info on the Perforce blog

答案 10 :(得分:2)

Perforce允许服务器拥有客户端。

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

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

请记住:Perforce客户端是服务器的木偶。您必须使用操作系统的安全功能来阻止它执行您不希望它执行的操作。 始终将Perforce客户端视为敌对客户。

答案 11 :(得分:1)

随着座位数量的增加,Perforce许可证的成本下降,我记得。所以每个座位不是900美元。它也是基于服务器的许可证;您支付使用它的人类开发人员的总数,而不是每个使用它的计算机客户端。所以,如果你是一个200人的商店,200个座位的许可证让他们都可以使用perforce,即使是在家里。

答案 12 :(得分:1)

我认为原因#1 在SVN和Perforce之间进行选择费用

小型存储库: SVN做得很好并且免费。

Big 存储库:使用SVN是致命的:http://yoawsconsult.blogspot.com/2009/05/whenwhy-you-cant-afford-to-use.html。 Perforce可以做大型存储库,但你必须付钱并且了解它。

答案 13 :(得分:1)

从我的实践中:

  • Perforce旨在存储大量blob文件(如软件发行版),svn将所有数据存储为文本。在svn

  • 中无法有效地存储这样的二进制数据
  • Perforce支持有用的东西,如“搁置变化”。用户要求perforce将更改存储为perforce服务器中的“补丁”。然后,如果作者询问,另一个用户可以查看更改。 Svn不支持

  • Svn命令行格式更易于理解和记忆以及日常使用

  • Svn是免费的

  • 在“git”和“svn”中,您可以在从repo接收文件后通过编辑本地文件系统中的文件直接编辑。在perforce“正确”处理文件的方式是标记他们你将与他们合作(p4编辑)....理论上,另一个人可以查看它,在实践中它不舒服< / p>

  • 由于应该完成的额外配置,本地系统中的Perforce客户端工作空间准备需要比svn更多的时间

答案 14 :(得分:0)

能够通过TortoiseSVN从exlorer做所有事情感觉非常舒服! 所以甚至安装了P4 Extention。但它真的不那么复杂!

另一方面,P4客户端为服务器存储库提供了一个可访问的视图,因此可以在没有完整检出的情况下工作。在仅使用TSVN的SVN时期,这总是感觉有点麻烦。

说这个我无法理解顶级海报评论:

  
      
  • Explorer shell扩展客户端(想想TortoiseSVN)糟透了,完全无法使用。
  •   

对于FOSS TortoiseSVN真是太棒了! (即使图标的东西在每台机器上都有点蠢和不同......)

使用TortoiseSVN你:

  • 可以重新排列功能
    • 带来'get lock ..'前面的例子
  • 实际上可以访问资源管理器中的所有功能
  • 在shell菜单中有图标
  • 会收到有关更新的通知

答案 15 :(得分:0)

perforce对子版本的一个缺点是svn中的export命令。将某些版本的代码导出或下载到任何地方都更容易。您不需要为此创建工作区。但是在perforce中,您只能将版本化的代码提供给工作区。

答案 16 :(得分:-3)

在Perforce中使用颠覆的主要好处在于我认为能够离线编辑并与同事同时进行。

如果数据基础设施松散地绑定(有离线时间),则svn会崩溃。即使服务器无法访问,您也可以做很多事情。 Perforce本质上需要始终可用的服务器连接。

免责声明:我在Perforce上的信息已经过时,在完全切换到svn之前在2005-06使用了一段时间