使用Perforce代替Subversion有什么好处?
我的团队已经使用了几年的SVN。 我们现在可以select切换到Perforce。
做这样一个转换的好处(和陷阱)是什么?
- P4跟踪你在服务器上的工作副本。 这意味着
- 大型工作副本处理速度更快。 我曾经有一个大型的SVN项目,一个简单的更新花了15分钟,因为它必须创build一个本地工作副本(数千个文件夹)的树。 文件访问速度很慢。 P4将关于工作副本的信息存储在数据库中,所以任何操作总是几乎是瞬时的。
- 如果你乱搞你的文件,不告诉服务器,你有麻烦! 你不能只删除一个文件 – 你必须用P4客户端删除一个文件,以便服务器知道。 请注意,如果您在本地删除一个文件,它将不会被连续更新下载,因为服务器认为您已经拥有它! 当发生这种情况时,我的结果是非常不同步,我通常不得不求助于清理我的本地副本并重新下载,这可能会非常耗时。 你一定要小心这个。
- 资源pipe理器shell扩展客户端(认为TortoiseSVN)吸收,是完全无法使用。
- 有两个GUI客户端应用程序提供了最好的function:P4Win和P4V,其中P4V更新,更易于使用,但不像function丰富。
- 有Visual Studio和Eclipse插件,虽然它们没有很多高级function,但它们工作得相当好。
- 一般来说,P4提供的function要比SVNless得多,有时甚至会令人困惑。
- 工作拷贝的定义很好,很灵活。 我相信P4在这里优于SVN:你可以为工作副本文件夹定义掩码,并创build各种奇怪的树,所以你只需要下载你想要的东西到你想要的地方,而不必手动与多个结帐。 当我在服务器上有几千兆字节的东西时,这个function非常方便,只需要一个特定的子集。 我用SVN在类似的情况下更麻烦。
- 在P4下分支是奇怪的。 分支集和不同types的分支和混淆的UI。 不幸的是,我不太记得这个细节。
除此之外,这是相当标准的。
我build议你保持SVN,除非你处理巨大的代码库或讨厌乱扔文件系统的.svn文件夹。 SVN + TortoiseSVN在大多数情况下更舒适。
我目前在不同的项目上使用。
- perforce分支机制是优越的。
- perforce冲突解决工具更好。
- 我真的很喜欢perforce强大的变更列表概念。
- Perforce似乎更快。
- 这是更容易设置和运行。
- 我们的一些成员非常喜欢perforce的MS Office插件,我在Mac上,所以我不能使用它。
但
- SVN客户端更好,特别是eclipse插件。
- Perforce更昂贵。
这些只是意见,所以也许这是一个可怜的回答:)
如果我已经在使用其中一个,那么我很难转换,因为这两者似乎都没有提供显着的优势,但是切换的中断可能会很大。
更新:由于写这个,我完全切换到使用个人和商业目的的GIT。 我会selectSVN或Perforce任何一天。
你的团队评估过Git吗? 它具有类似于Perforce中可用的function,但是免费(FOSS)。
在与一个大型团队合作时,要么SVN是一个很好的select。
我在工作中使用perforce,svn在家。
执行GUI是相当不错的,但只有一次你习惯了。 它肯定有一个学习曲线,当非程序员开始使用perforce时,通常需要一些时间才能得到概念。
乌龟很棒,使用起来非常简单。 我的律师妻子颠覆了所有使用它的文件;)
分支很容易执行。 其实这么简单,那人分手的原因不是太多。 然后你整合,因为你分支。 它可以很容易地成为你做的唯一的事情。
Svn被集成在更多的产品中。 至less有更多的产品,我使用。 这是一个很大的优势,因为如果你不得不在开发环境外部使用eithere,它们都会变得笨重。
每隔一段时间,我们都会遇到问题,它认为您的本地副本是最新的,但事实并非如此。 那么你必须强制同步,如果它仍然不好,请删除本地文件并重新同步。 从来没有与svn这样的问题。 这实际上是一个巨大的问题,因为你甚至不知道你正在做一个旧的副本。
另一个要考虑的是为什么你要改变。 如果你有一个可以工作的系统,并且每个人都熟悉它并且满意,那么为什么要replace它呢?
在Perforce网站上,他们有一篇比较两者的论文: P4 vs SVN
显然,给出源码,你必须认识到,它强调了SVN的优势,但它仍然是一个有用的阅读。 你永远不知道,给你自己的特殊环境,你的团队可以从中受益的其中一个好处可能是你的杀手锏。
我肯定会推荐Perforce的其他答案已经涵盖的一些原因,但我不能提供一个从未真正使用它的SVN的比较。
在Perforce中看到,正确的分支和分支是命名空间的一部分。 合并很容易。 从Subversion的angular度看,我看不出什么坏处。
如果需要,可以在Perforce中离线编辑。 你的工作区定义了文件是只读的还是可写的,所以你可以把它们写成可写的,然后让Perforce找出需要检查的东西。
最好是只读文件,并检查你需要什么,以便其他人(和你自己)知道你已经做了什么。
对你来说更好的系统取决于你的要求,如果你没有要求,那么Perforce获胜。
谁使用Subversion? 小型非商业团队廉价或小型商业团队
谁使用Perforce? 谷歌索尼三星nVidia赛门铁克
我使用SVN,不是很多,只是试试。 我使用了Perforce大约三年。 我以为很好。 客户服务非常出色,解决了一个问题,这个问题竟然只是我的愚蠢,他们甚至实现了我提出的一个function。
其他一些开发人员,特别是非开发人员不得不学会使用它,特别是在定义客户端规范(服务器上的文件夹映射到本地文件夹)时,有点棘手。
我发现它很快得到文件进出,并非常可靠。 我认为,一旦我们习惯了,大部分与我一起工作的开发人员都非常喜欢它。 我们在切换之前使用了Visual Source Safe,因此,几乎所有东西都比这更好。
缺点是花钱。 我相信SVN是非常好的系统,因为SVN是免费的,我认为你必须有一个令人信服的理由来切换,特别是Perforce需要花一些时间去学习。 如果SVN为你做这个工作,而且你没有任何投诉,我build议你留下来,并且为了节约下雨天的钱!
我已经使用了两者,以我的经验来看,如果你拥有一个庞大的团队和/或代码库,Perforce就很有意义。 否则我会selectSVN – 这是更容易设置和维护。
截至最近的版本,Perforce有一个新function搁置更改 :
搁置是在Perforce服务器上临时存储正在进行的工作而不提交更改列表的过程。 当您需要在将工作交给仓库之前,需要执行多个开发任务(例如,从优先级较高的工作中断,在多个平台上进行testing)或在共享文件时共享代码审查文件时,Shelving非常有用。
这与git的分支模型是一致的,当你需要多任务的时候,你可以毫不费力地从一个本地分支切换到另一个分支。
AFAIK,Subversion没有类似的function。
有关Perforce博客的更多信息 。
我记得,随着座位数量的增加,Perforce授权的成本下滑。 所以不是每个座位900美元。 这也是一个基于服务器的许可证; 你支付使用它的人类开发者总数,而不是每个使用它的机器客户端。 所以,如果你是一个200人的商店,那么200个座位的许可证就可以让他们全部使用,即使是在家里。
在我看来,selectSVN和Perforce的原因是成本 。
小型资料库:SVN的工作很好,免费。
大型资料库:使用SVN是致命的:http: //yoawsconsult.blogspot.com/2009/05/whenwhy-you-cant-afford-to-use.html 。 Perforce可以做大型的仓库,但是你必须付钱才能知道。
Perforce允许服务器拥有客户端。
Perforce服务器可以读取和写入客户端上的任意文件,从而执行任意代码。 Perforceconfiguration全部是服务器端的,所以服务器可以简单地把客户计算机的整个硬盘视为一个存储库,然后做任何想做的事情。
除非在SELinux沙盒中,否则不要运行Perforce。
记住:Perforce客户端是服务器的傀儡。 您必须使用操作系统的安全function,以防止它做你不想做的事情。 总是把Perforce客户端视为敌对的。
从我的做法:
-
Perforcedevise用来存储大量的blob文件(比如软件分发),svn将所有数据存储为文本。 在svn中不可能有效地存储这样的二进制数据
-
Perforce支持有用的东西,如“搁置更改”。 用户要求perforce在perforce服务器中存储像“修补程序”这样的更改。 如果作者问他们,另一个用户可以查看更改。 Svn不支持它
-
Svn命令行格式更易于理解和记忆以及日常使用
-
Svn是免费的
-
在“git”和“svn”中,你可以通过编辑本地文件系统中的文件直接修改文件。 在执行文件的“正确”方式是标记他们,你将与他们合作(p4编辑)….在理论上,另一个家伙将可用于查看它,在实践中,它是不舒服的
-
Perforce客户端工作区准备在您的本地系统需要更多的时间,然后svn由于应该做额外的configuration
能够通过TortoiseSVN完成所有工作,感觉非常舒适! 所以甚至还安装了P4 Extention。 但它真的不那么成熟!
另一方面,P4客户端提供了一个可访问的服务器存储库的视图,所以可以没有完整的结帐工作。 SVN中只有TSVN才会感觉有点麻烦。
说这个我看不懂顶级海报评论:
- 资源pipe理器shell扩展客户端(认为TortoiseSVN)吸收,是完全无法使用。
对于FOSS TortoiseSVN来说太棒了! (即使图标的东西在每台机器上工作有点琐碎和不同)
与TortoiseSVN你:
- 可以重新排列function
- 例如,为了“拿锁”
- 实际上可以从资源pipe理器访问所有function
- 在shell菜单中有图标
- 被通知更新
perforce对sub版本的一个缺点是在svn中输出命令。 将某个版本的代码导出或下载到任何地方都比较容易。 您不需要为此创build工作区。 但是在perforce中,你只能得到版本化的代码到你的工作区。
在Perforce上使用Subversion的主要好处在于,我认为能够离线编辑和与同事同时编辑 。
如果数据基础设施松散结合(有离线时间),svn岩石。 即使服务器不可访问,您也可以做很多事情。 Perforce实质上需要一个始终可用的服务器连接。
免责声明:我的信息Perforce是旧的,在2005 – 06年使用它一段时间,然后完全切换到svn