在这里和许多程序员wiki / blogs / ect上似乎有很多人。其他地方真的不喜欢VSS。很多人也非常不喜欢cvs。在许多地方,我听说过很多关于使用VSS或cvs是否更好或更差的意见,然后使用无源控制,请评价最差并解释原因!!!!!你这样评价他们。随意在排名中投入自己糟糕的系统。如果您认为这取决于具体情况,请尝试解释导致不同排名的一些不同情景。
(注意:我看到很多关于什么是更好但很少更糟糕的讨论。)
第二个注意事项:虽然两个答案都很好,但我看起来不是很好的替代品,而是为了比较哪个更糟糕,更重要的是为什么!
答案 0 :(得分:8)
根本没有源代码控制是最糟糕的选择,不需要讨论这个,这实际上不是一个选项。
我曾经使用 VSS 一次(10年前),除了它有非常糟糕的第三方工具支持这一事实外,我只会提到存储库已经多次损坏(叹息) )。这肯定解释了为什么我根本不信任VSS并且更喜欢任何开源工具替代方案(不能更糟)。
如果我可以避免 CVS ,我会这样做。它有点工作,得到广泛支持,但确实缺乏重要的功能(最重要的是原子提交)。但它有效(它比没有任何东西或VSS更好)。
我在一个大项目中使用了Borland Starteam 。非技术人员可能会欣赏它的客户端用户界面,但它对于开发人员来说缺乏太多重要的东西:没有很好的IDE集成(即使在JBuilder,有点讽刺),没有后提交钩子,没有高效的Java API(例如与Maven一起使用) ),该死的WAN等等加上一些其他非常烦人的故障(如UI不显示目录不在视图中)。并不可怕,但有更好的解决方案。
ClearCase 一直是一次糟糕的体验,非常适合反敏捷开发(让我发疯)。 PVCS (一场噩梦)也是如此。我甚至不知道该说什么/从哪里开始:昂贵,沉重,差的工具等。购买这些工具的人不能使用它们,这是不可能的。
Subversion 本来是CVS的继承者,一个更好的CVS(通过提供缺少的功能),被广泛使用,得到了许多工具的支持,仍然是非常值得推荐的。比以前的任何解决方案都好。
然后我们有像 Mercurial , Git 这样的DVCS,它们功能更强大,但需要更多技能才能使用,并且仍然缺乏工具支持/集成(使用命令line不是每个人的选择)。不过,它们是值得推荐的,具体取决于具体情况(不是每个人都需要更多的力量),Mercurial会有我的偏好,因为我觉得它更友好。
这张照片很好地总结了Martin Fowler的VersionControlTools页面:
他写这页的时候一定是读过我的想法:)
答案 1 :(得分:4)
根据我的经验 -
Git> SVN> CVS> PVCS>没有> VSS
推理 -
1。)Git - 漂亮的分布式模型;最初在Windows上缺少一些支持,但现在适用于任何操作系统;很多工具/ IDE支持。
2。)SVN - 相当标准;最初可能会有少量痛苦设置服务器,但没什么大不了的;适用于所有事情。
3。)CVS - 旧;有点痛苦;但仍然可以使用几乎所有东西(操作系统,IDE,工具)。
4。)PVCS - 专有;没有集成到许多工具/ IDE中;与其他现代版本控制系统相比,工作流程过于复杂。
4。)没有 - 绝对不是首选,但至少你不是在欺骗自己。在这个时代,这仍然是非常不可原谅的,有如此多的选择,而Source Control是众所周知的最佳实践。
5。)VSS - 绝对不是首选;大多数被TFS取代;不稳定的;可以默默地失败;比什么都没有,因为你在欺骗自己,它实际上会确保你的资源安全。
答案 2 :(得分:3)
关于VSS的事情是:
一个批处理脚本,它使用今天的日期作为文件名生成源文件夹存档的压缩,比VSS强大约10%,可靠性高5倍。
答案 3 :(得分:0)
没有源控制肯定是最糟糕的。即使您自己编程,也需要保留代码的历史记录和备份。
然后我会说VSS。我已经使用它(多年前)并且它有效,但基本上不像现代的源控制系统。它总比没有好,但由于有很多免费选项可以很好地工作,我不会真的推荐VSS,除非你不幸成为“MS-Only”商店并且有“我们会使用它”的心态“因为它带有MSDN”,不幸的是我经常看到它。
VSS上方的一小步是SourceGear Vault。 http://www.sourcegear.com/vault/这是第三方源代码控制,基本上是从头开始重写VSS,但对远程用户更好。我也不会真的推荐这个,但如果你能获得批准,那么这是一个选择。
CVS优于这些。它是免费的,开源的,提供良好的历史记录和分支/合并支持,并且无需锁定即可实现并发开发。
SVN更好,而且选择很多。它是免费的,开源的,但也有许多来源的商业支持(即,如果你需要,你可以购买支持)。有很多很棒的工具可以提供非常好的并发开发而不需要锁定。
下一步是更新的分布式版本控制系统,如Git或Mercurial。据我所知,在这些系统中,每个用户通常都会获得一份完整的repo副本,并拥有自己的本地分支和历史记录。他们可以在本地100%工作,包括提交,分支和回滚以及所有内容,并在准备就绪时,向上游推送一组更改。这可以在许多不同的配置中继续,以满足各种需求。
答案 4 :(得分:0)
Perforce>>>> CVS> VSS> SVN。
到目前为止,Perforce是最好的。一切正常。我主要使用它集成在IDE中,因为集成很好。我使用界面来完成更高级的任务。CVS工作得很好,虽然它只是命令行(我使用旧版本)。
VSS只是好的。在团队成长为10人后,它变得太慢了。这是一个旧版本。
SVN目前是我使用的和它的非功能性。至少Tortoise SVN。状态通常不会在资源管理器中更新,它经常无法跟踪修改的历史记录,您总是需要清理他们的数据库并且他们的树很混乱。我宁愿手动执行源代码控制而不是使用此工具。但这不是我的电话,所以我在目前的工作中坚持下去,感叹......
答案 5 :(得分:-1)
VSS非常适合用于源代码管理。