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的一些其他问题:
你提交的不是你得到的东西:例如,如果你在英特尔Mac上提交UTF16文件并从另一个PPC Mac同步它,你会得到另一个UTF16文件,因为perforce是智能的,并且会将你的文件转换为客户端字节-ordering.UTF16-BE - UTF16-LE ?!
脚本perforce比其他工具难度高10倍.
如果你开始使用它并通过脚本将它绑定到你的进程,可能你会死于它,因为一切都是以perforce方式和perforce方式完成的:(
想要下载p4服务器非常容易:只需在项目的根目录上进行同步即可.我工作的地方不允许这样做,因为它可以降低服务质量!有一个监视脚本正在监视perforce服务器进程,如果其中一个正在接管x GB的RAM,它会杀死它并向您发送通知.是的,在客户端上执行一个简单命令可以在5-10秒内在服务器上创建3GB进程.
Perforce的模型与svn有点不同.每个文件始终锁定在您的工作副本中,您必须声明强制您将开始编辑它.这样做的好处是,您可以随时立即查看其他人正在处理文件.
与其他SCM的所有差异都不是很大.您在许多地方遇到Perforce,因为它曾经是少数(如果不是唯一的)部分正常的SCM在Windows和Mac上运行的.
如果我没有弄错的话,你可以免费使用有限数量的客户,所以你可以毫不费力地尝试一下......
就个人而言,我鄙视perforce.它的用户界面非常糟糕,复杂,而且非常直观.它经常出现问题并且崩溃.
之前我曾与SVN合作过(通过Tortoise SVN)并且发现它更加简单和友好.
当然所有这些都是从用户的角度出发,可能SCM有不同的视角