Perforce 有什么好处?
我很想了解 Perforce 如何在特定情况下比 Subversion 更好地工作。
如果您有使用 Perforce 和 Subversion 的经验,并且您不相信有任何优势,或者认为 svn 比 Perforce 有优势,我也想知道为什么。
Perforce 有什么好处?
我很想了解 Perforce 如何在特定情况下比 Subversion 更好地工作。
如果您有使用 Perforce 和 Subversion 的经验,并且您不相信有任何优势,或者认为 svn 比 Perforce 有优势,我也想知道为什么。
我与 Perforce 以及 Clearcase、Sourcesafe、RCS、PVCS、CVS 和 Subversion 合作多年。最近我也开始使用 GIT。
根据这次经验,我认为,对于大多数用途,Perforce 是商业环境中最好的版本控制系统。虽然最初不像 Subversion 那样简单,但它具有许多更强大的功能,尤其是在分支和合并方面。“默认锁定”方法通常更适合这种环境。
对于个人资料、小型协作项目、小型初创企业或开源项目,我发现 Subversion 在许多情况下更适合。他们有不同的方法,不同的工作方式。你不能只是把它们按比例排列,然后说哪个是最好的。
那就是说我讨厌 ClearCase。ClearCase 通常是从上面强制下来的(即管理决策)。
对于 Subversion 胜过 Perforce 的许多情况,如今许多人似乎更喜欢 GIT、Bazaar、Mercurial 等分布式系统。从我对 GIT 的了解来看,他们很可能是对的,我相信其他海报也会证明这一点。
Perforce 的一大卖点是速度。服务器跟踪客户端上文件的状态;因此,诸如“获取仓库的最新状态”之类的操作是微不足道的——服务器已经知道您拥有哪些文件,并且它可以将最少量的信息发送回您。
这个优点也带来了一个缺点,如果你在本地编辑文件而不先检查它们,在本地移动文件而不执行集成,或者在本地删除文件,服务器和客户端可能会不同步。
因为 Perforce 服务器只向客户端发送最少量的数据,所以 Perforce 在慢速链接上表现良好,例如美国的客户端访问伦敦的仓库的情况。话虽如此,Perforce 协议相对“健谈”,因此很容易因拥塞链接而减速。
我每天在工作中使用 perforce,我不会向任何人推荐它。我敢肯定它可能是多年来最好的 SCM,但它的核心模型已经过时了。
Perforce 可能是我用过的最集中的 SCM 系统。想象一下,他们为没有在您的磁盘上缓存任何内容而感到自豪。进行同步很烦人,因为在很多情况下,除非您不进行强制同步,否则它什么也不会做 - 并且强制同步确实会将所有内容从服务器复制回您 - 如果您的项目是 10GB,它将复制所有内容.
我以前有使用 SourceSafe、CVS、SVN、Mercurial 和 git 的经验(后两者较少)。
我认为大多数开源 SCM 都是成熟的,您可以选择其中之一。如果你想要集中的东西,就选择 SVN,如果你想要分散的东西,使用 Mercurial(我在 Windows 上使用 git 的经历很糟糕)。
我在 perforce 上遇到的其他一些问题:
Perforce 的模型与 svn 有点不同。每个文件始终锁定在您的工作副本中,您必须声明强制您开始编辑它。例如,这样做的好处是您可以随时查看还有谁在处理文件。
总而言之,与其他 SCM 的差异并不是很大。你在很多地方都会遇到 Perforce,因为它曾经是少数(如果不是唯一的)部分体面的 SCM 之一,可以在 Windows 和 Mac 上运行。
如果我没记错的话,您可以在有限数量的客户中免费使用它,这样您就可以毫无痛苦地试用它......
就个人而言,我鄙视强制执行。它的用户界面很糟糕,很复杂,而且根本不直观。它是越野车并且经常崩溃。
我以前使用过 SVN(通过 Tortoise SVN),发现它更加简单和友好。
当然所有这些都是从用户的角度来看,可能SCM有不同的角度
您可能会在使用 Perforce 而不是 Subversion 的好处是什么中找到提示?(只需按照您的 Perforce 标签...)。
我们在工作中使用 Perforce,虽然我对各种 SCM 软件几乎没有经验,但我发现这个做得很好,具有良好的 GUI(在 Windows 上)、良好的命令行支持、许多不错的功能......可能需要一段时间才能完成习惯它的逻辑,但我认为对于大多数 SCM 来说可能都是正确的。
Perforce 支持锁定,并且对于某些无法合并的文件类型(二进制资源、思考图像等)似乎需要它。但是,它不需要对普通源文件进行锁定,这些源文件可以被多个用户同时打开进行编辑,然后合并回软件仓库。
我发现 Perforce 的系统带有“更改列表”,该组更改为多个文件并将它们视为一个单元,很好。我相信你可以用 SVN 做一些类似的事情,但它并不是那么容易开箱即用。
我同意之前的 Yuval - 在 GUI 和命令行模式下使用过 Perforce 和 svn,我更喜欢 svn。然而,我当时工作的公司从它使用的免费 cvs 切换到了 Perforce。它的 GUI 更加华丽。我认为它的提交模型是不同的——它使用锁定,这可能比某些开发人员/经理更可取。在商业环境中,为您的版本控制工具配备支持人员也可能会有所帮助。我听说在一些大公司中,在生产环境中使用开源代码是被禁止的,因为他们希望能够获得对每一行代码的支持。
Perforce 服务器可以在客户端读取和写入任意文件,从而执行任意代码。Perforce 配置都是服务器端的,因此服务器可以简单地将客户端计算机的整个硬盘视为存储库,并对其进行任何操作。
除非在 SELinux 沙箱中,否则永远不要运行 Perforce。
记住:Perforce 客户端是服务器的傀儡。您必须使用操作系统的安全功能来防止它做您不希望它做的事情。始终将 Perforce 客户端视为敌对。