66

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

做出这样的转变有什么好处(和陷阱)?

4

17 回答 17

51
  • 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 在大多数情况下要舒适得多。

于 2008-10-01T13:05:34.480 回答
44

我目前在不同的项目中使用这两种方法。

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

  • SVN 客户端更好,尤其是 eclipse 插件。
  • Perforce 更贵。

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

如果我已经在使用其中一个,我将很难切换,因为两者似乎都没有比另一个提供真正显着的好处,但切换的中断可能很大。

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

于 2008-10-01T12:58:56.820 回答
15

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

与大型团队合作时,两者都是 SVN 的绝佳替代品。

于 2008-10-01T13:33:44.693 回答
6

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

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

乌龟很棒,它非常易于使用。我的律师妻子使用它颠覆了她所有的文件;)

分支很容易执行。事实上很容易,以至于人们没有太多理由分支。然后你整合,因​​为你分支了。它很容易成为你唯一要做的事情。

svn 被集成在更多的产品中。至少我使用的产品更多。这是一个很大的优势,因为如果您必须在开发环境之外使用任何一个,它们都会变得笨拙。

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

另一件要考虑的事情是你为什么要改变。如果您有一个可以工作的系统,并且每个人都熟悉它并且对它感到满意,为什么要更换它呢?

于 2008-10-01T14:59:34.283 回答
6

在 Perforce 网站上,他们有一篇比较两者的论文: P4 vs SVN

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

我当然会推荐 Perforce,原因已经在其他答案中介绍过,但我无法与从未真正使用过的 SVN 进行比较。

于 2008-10-09T10:16:42.213 回答
4

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

于 2008-10-01T13:01:14.147 回答
3

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

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

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

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

于 2014-12-20T05:29:52.810 回答
2

我用SVN,不是很多,只是为了试一试。我使用 Perforce 大约三年。我以为很好。客户服务非常出色,非常快地解决了一个错误,原来只是我很愚蠢,他们甚至实现了我建议的一个功能。

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

我发现它可以非常快速地进出文件,并且非常可靠。我认为与我共事过的大多数开发人员都非常喜欢它,一旦我们习惯了它。不过,在我们切换之前,我们一直在使用 Visual Source Safe,因此,几乎任何事情都比这更好。

缺点是要花钱。我相信 SVN 是一个非常好的系统,因为 SVN 是免费的,我认为你必须有一个令人信服的理由来切换,尤其是 Perforce 确实需要一段时间来学习。如果 SVN 为您完成这项工作,并且您对此没有任何抱怨,我建议您继续使用它,以备不时之需!

于 2008-10-01T13:08:35.567 回答
2

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

于 2008-10-01T13:20:57.970 回答
2

如果需要,您可以在 Perforce 中离线编辑内容。你的工作空间定义了文件是只读的还是可写的,所以你可以让它们都可写,破解然后让 Perforce 找出需要签入的内容。

最好让文件只读并检查您需要什么,以便其他人(和您自己)知道您已经/正在做什么。

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

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

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

于 2008-10-30T11:39:10.537 回答
2

在最近的版本中,Perforce 具有搁置更改的新功能:

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

这类似于 git 的分支模型,当您需要多任务处理时,它可以让您轻松地从一个本地分支切换到另一个分支。

AFAIK,Subversion 没有类似的功能。

有关 Perforce 博客的更多信息

于 2010-04-09T15:02:24.397 回答
1

我记得,随着席位数量的增加,Perforce 许可的成本会下降。因此,每个座位并不完全是 900 美元。它也是一个基于服务器的许可证;您为使用它的人类开发人员总数付费,而不是为使用它的每个机器客户端付费。因此,如果您是一家有 200 人的商店,那么 200 席许可证让他们都可以使用 perforce,即使是在家中也是如此。

于 2008-11-21T06:31:47.737 回答
1

在我看来,在 SVN 和 Perforce 之间进行选择的原因#1是cost

小型存储库:SVN 可以免费完成它的工作。

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

于 2011-01-13T21:39:18.940 回答
1

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

于 2015-02-27T06:07:31.913 回答
1

根据我的实践:

  • Perforce 还设计用于存储巨大的 blob 文件(如软件发行版),svn 将其所有数据存储为文本。在svn中不可能有效地存储这样的二进制数据

  • Perforce 支持有用的东西,比如“搁置更改”。用户要求 perforce 在 perforce 服务器中像“补丁”一样存储更改。如果作者要求,其他用户可以查看更改。svn 不支持

  • svn 命令行格式更容易理解和记忆,更适合日常使用

  • svn是免费的

  • 在“git”和“svn”中,您在从 repo 接收文件后直接通过编辑本地文件系统中的文件来编辑您的更改。实际上,处理文件的“正确”方法是将它们标记为您将要使用它们(p4 编辑)....理论上其他人可以查看它,实际上它不舒服

  • 本地系统中的 Perforce 客户端工作区准备需要比 svn 更多的时间,因为需要进行额外的配置

于 2016-03-19T09:20:42.133 回答
0

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

另一方面,P4 客户端提供了对服务器存储库的可访问视图,因此无需完全签出即可工作。在仅使用 TSVN 的 SVN 时代,这总是感觉有点麻烦。

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

  • Explorer shell 扩展客户端(想想 TortoiseSVN)很糟糕并且完全无法使用。

对于 FOSS TortoiseSVN 来说简直太棒了!(即使图标的东西在每台机器上都有点讨厌和不同..)

使用 TortoiseSVN 你:

  • 可以重新排列功能
    • 例如,将“获取锁定..”放在前面
  • 实际上可以从资源管理器访问所有功能
  • 在 shell 菜单中有图标
  • 收到有关更新的通知
于 2012-03-29T13:05:06.417 回答
-3

在我看来,使用subversion而不是 Perforce的主要好处是能够离线编辑内容并与您的同事同时进行。

如果数据基础设施松散结合(有离线时间),svn 摇滚。即使服务器无法访问,您也可以做很多事情。Perforce 本质上需要一个始终可用的服务器连接。

免责声明:我在 Perforce 上的信息很旧,在 2005-06 年使用了一段时间,然后完全切换到 svn

于 2008-10-01T13:40:15.397 回答