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,但我不建议任何人使用它。我确定它或许曾经是多年来最好的SCM,但它的核心模型已经过时了。
Perforce可能是我使用过的最为集中化的SCM系统。想象一下,他们以不在你的磁盘上缓存任何内容而自豪。进行同步操作很麻烦,因为在许多情况下,除非你强制同步,否则什么都不会发生 - 而强制同步会将所有内容从服务器复制回来 - 如果你的项目有10GB,它将全部复制。
我之前使用过SourceSafe、CVS、SVN、Mercurial和git(后面两者用得较少)。
我认为大多数开源SCM都很成熟,你可以选择其中之一。如果你想要一个集中化的,请选择SVN;如果你想要一个分散式的,请选择Mercurial(我在Windows上使用git有不好的经历)。
我使用perforce时遇到的其他问题:
Perforce与svn有些不同。在你的工作副本中,每个文件始终处于锁定状态,你必须向perforce声明你将开始编辑它。
这有一个优点,即你可以立即看到谁正在编辑文件。
总的来说,与其他SCM相比,差异并不是很大。你会在许多地方遇到Perforce,因为在某个时候,它是少数(如果不是唯一)在Windows和Mac上运行的部分合理的SCM之一。
如果我没记错的话,你可以免费使用它,但客户端数量有限,所以你可以轻松尝试它...
个人而言,我讨厌Perforce。它的用户界面很糟糕、复杂,并且非常不直观。它有错误和经常崩溃。
我之前使用过SVN(通过Tortoise SVN),发现它更简单友好。
当然,这些都是从用户的角度来看的,可能SCM有不同的观点。
除非在SELinux沙箱中运行,否则永远不要运行Perforce。
记住:Perforce客户端是服务器的木偶。您必须使用操作系统的安全功能来防止它做出您不想让它做的事情。 始终将Perforce客户端视为敌对。