我的公司正在使用CVS作为源控制的事实标准。 但是,我听说很多人都说SVN更好。

我知道SVN比较新,但除此之外,我对它的好处并不熟悉。

我正在寻找的是两个系统的良好,简洁的比较,注意到Java / Eclipse开发环境中每个系统的优点和缺点。

===============>>#1 票数:61 已采纳

CVS仅跟踪逐个文件的修改,而SVN将整个提交跟踪为新修订,这意味着更容易跟踪项目的历史记录。 添加所有现代源控制软件都使用修订概念的事实,因此从SVN迁移比从CVS迁移要容易得多。

还存在原子提交问题。 虽然我只遇到过一次,但有可能2个人在CVS中相互冲突,相互冲突,丢失一些数据并使客户端处于不一致状态。 如果早期发现这些问题并不重要,因为您的数据仍然存在于某处,但在压力很大的环境中可能会很痛苦。

最后,围绕CVS开发的工具不多了。 虽然像Git或Mercurial这样的新工具和新工具肯定缺乏工具,但SVN在任何系统上都有相当大的应用程序基础。

编辑2015 :说真的,这个答案现在已经7年了。 忘记SVN,像其他人一样使用Git!

===============>>#2 票数:19

众多比较中的一个:

http://wiki.scummvm.org/index.php/CVS_vs_SVN

现在这对于那个项目来说非常具体,但是很多东西都是普遍的。

Pro Subversion:

  • 支持版本化重命名/移动(CVS不可能):Fingolfin,Ender
  • 本机支持目录:可以删除它们,并且它们是版本化的:Fingolfin,Ender
  • 文件属性已版本化; 没有更多的“可执行位”地狱:Fingolfin
  • 总体版本号使构建版本控制和回归测试变得更加容易:Ender,Fingolfin
  • 原子提交:Fingolfin
  • 直观(基于目录)分支和标记:Fingolfin
  • 更简单的钩子脚本(提交前/后提交等):SumthinWicked(我在提交后将其用于Doxygen)
  • 防止意外提交冲突文件:Salty-horse,Fingolfin
  • 支持自定义'diff'命令:Fingolfin
  • 离线差异,他们是即时的:sev

===============>>#3 票数:14

SVN与CVS相比有三个主要优势

  • 它更快
  • 支持二进制文件的版本控制
  • 并添加事务提交(全部或全部)

===============>>#4 票数:7

Subversion的书中有一个附录 ,详细说明了与CVS的重要区别,这可能有助于您做出决定。 这两种方法或多或少是相同的想法,但SVN专门用于修复CVS中长期存在的缺陷,所以至少在理论上,SVN永远是更好的选择。

===============>>#5 票数:4

我将介绍Eridius对Git的建议,但我会将其扩展到其他DRCS(分布式版本控制系统),例如Mercurialbazaar

这些产品是相当新的,目前它们的工具和集成水平似乎很低(基于我的初步研究)。 我会说他们最适合那里的电力开发者(并且在这里;-))。

在另一方面,有什么不会的CVS目前正在为您做什么? 从你最初的问题来看,你真的没有,“CVS很糟糕,我可以使用什么呢?”

你必须权衡任何潜在迁移的成本与利益。 对于现有项目,我认为很难证明这一点。

===============>>#6 票数:4

有一点不容忽视的是生态系统。 我在CVSNT商店工作,我发现默认情况下支持越来越多的开源工具支持SubVersion。

===============>>#7 票数:2

顺便说一句:CVSNT支持原子提交

===============>>#8 票数:2

作为正在CVS和SVN之间切换的人(最初我们用cvs2svn切换了所有项目,然后我们决定只在新项目上使用svn进行转换),这里有一些我们遇到的问题。

  • 合并和分支是非常不同的,如果您经常分支和合并,除非您在服务器上运行SVN 1.5,必须知道何时分支(这在Tortoise SVN对话框中不是很清楚)。 迈克尔说分支和合并是直观的,我认为在使用CVS 10年后,事实并非如此。
  • 如果您在Linux上运行SVN服务器,则可能很难将SA移至svn 1.5,作为默认安装1.4.x.
  • 合并冲突在TortoiseSVN中并不像TortoiseCVS那样容易或明显(至少对我和我的同事而言)。 三窗格方法需要一些习惯,WinMerge(我首选的合并工具)不会进行三窗格合并。
  • 注意:我读过的许多在线教程和杂志文章显然都没有分支和合并,你应该将你的主存储库设置为https://svn.yoursvnserver.com/repos/YourProject/Trunk并在https上分支:/ /svn.yoursvnserver.com/repos/YourProject/Branches/BranchX 如果你在错误的地方开始你的回购,你可以清理,但它会导致混乱。

===============>>#9 票数:1

你应该看看Git而不是SVN。 这是一款超快速且功能强大的DVCS。 它不是用户友好为SVN,但它提高了在这方面,它并不学。

===============>>#10 票数:1

CVS(并发版本系统)和SVN(SubVersioN)是两个版本控制文件系统,由在单个项目上进行协作的团队广泛使用。 这些系统允许协作者跟踪所做的更改并知道谁在开发哪个以及是否应该将分支应用于主干线。 CVS是两者中较老的一部分,它已经成为许多人的标准协作工具。 SVN更新,它引入了许多改进来满足大多数人的需求。

===============>>#11 票数:0

您也可以选择仅将最新代码从CVS迁移到SVN并冻结当前的CVS仓库。 这将使迁移更容易,您也可以在旧的CVS仓库中构建旧版本。

===============>>#12 票数:0

好吧,我觉得有些东西让人觉得很棒。

  1. SVN-Altassian坩埚组合是一种非常优越的评审和质量检查方法
  2. 更好地管理冲突和合并
  3. 结帐,执行提交等明显更快。
  4. 原子提交问题 - 在CVS中一起提交的2个人可能会相互冲突,丢失一些数据并使您的代码库处于不一致状态

使用cvs2svn可以在几个小时内轻松完成迁移。

  ask by shsteimer translate from so

未解决问题?本站智能推荐:

关注微信公众号