我的公司无意中从cvs切换到颠覆,现在我们都希望我们有cvs回来。 我知道有一些工具可以将历史记录和变化从cvs迁移到svn,并且没有相应的工具可以反过来。 关于如何做到这一点的任何建议或想法?
答案 0 :(得分:25)
我最初将此作为对其他人答案的评论添加,但后来意识到这是一个答案,各种各样。我之前已经完成了这些转换,没有现成的方法可以从一个SCM系统转换到另一个系统。
编写一个脚本来获取SVN存储库中的提交列表,并逐个迭代它们,将它们合并到一个新创建的CVS存储库中,这不是火箭科学。让所有分支和标签完全正确可能需要更多工作,但如果您只想保存几个分支的修订历史记录,那应该非常简单。
我也认为你不会通过切换回CVS获得任何东西,但如果你想这样做,那么你可能会编写自己的脚本。毫无疑问,“svn export”命令在这项工作中非常有用。
答案 1 :(得分:8)
那么SVN对贵公司不喜欢什么,CVS做得更好? SVN的设计人员竭尽全力使SVN体验与CVS非常相似。如果您使用Tortoise客户端作为前端,体验非常相似。 SVN为您提供原子提交,虽然不太符合Perforce的标准,但却在CVS前面达到了数英里。
我必须同情你的困境。我升级了我们的开发团队和从CVS到SVN的IT团队。我得到了所有正确的python脚本来升级所有版本历史记录,我们已经愉快地使用SVN近4年了。大约三个月前,IT团队负责人决定从SVN“升级”他的所有项目,猜猜是什么?这是正确的,版本控制系统的重型升降机:SourceSafe!
我肯定会坚持使用SVN,甚至可以查看一些较新的分布式系统,例如Mercurial。使用这些系统,没有中央服务器。他们依靠能够分支和合并了数十个或数百个同行。您可以定义自己的拓扑,例如,您可以将特定对等体指定为执行每日构建的对等体。
答案 2 :(得分:7)
我不认为这些工具是朝着另一个方向发展的,因为它的需求并不多。
如果你真的必须这样做,那么编写一个遍历SVN仓库历史的脚本,获取每个修订并将其提交给CVS应该不是很难。
顺便说一下,我真的很想知道你对SVN有什么问题。答案 3 :(得分:6)
不是升级版。不要这样做。
说真的,为什么你更喜欢CVS到SVN? CVS实际上是一个假装允许团队在没有明确沟通的情况下工作的玩具。真的太可怕了。
如果出于某种原因需要SVN之外的其他内容,请查看其他版本控制系统。有很多,它们几乎都比CVS好(事实上,只有Visual Source Safe很差)。
答案 4 :(得分:6)
SVN并不好。 SVN优于CVS。 如果你想更改结账Mercurial,GIT,Bazaar。
答案 5 :(得分:6)
git的一个方面在所有其他答案中都引起了你的注意:git提供了一个cvs服务器模拟,这样你就可以迁移到git(svn到git很容易并得到很好的支持)和稍后使用cvs服务器接口以集中方式访问存储库。没有人知道你在后台使用git而且你不必处理分布式备份问题。
答案 6 :(得分:5)
您的选择可能存在实际限制。请记住,CVS的主动开发已经停止了一段时间,因此CVS开发人员可能没有适合您的工具。而且由于svn的主要目标之一是成为更好的CVS,这些开发人员可能也不会期望任何人向后退。
但是如果你不喜欢颠覆,为什么不看看更现代的分布式系统(git,mercurial等)?
答案 7 :(得分:4)
当你拥有的只是锤子时,一切看起来像钉子。
最好的办法是学习svn,这样可以提高知识水平。
答案 8 :(得分:4)
同意下士公司。
SVN优于CVS,因为它被设计为 - 它大致相同,有一些简单和新功能。
使用Svn,您可以移动/重命名文件而不会丢失其历史记录;你得到更安全的提交(提交是原子操作)和全局修订。
无论如何,在回到CVS之前尝试更好地了解它,甚至更好,尝试真正了解您作为存储库团队的需求。
PS:我认为下士正在谈论Mercurial
答案 9 :(得分:4)
svn应该比cvs好,但在某些方面效果不佳。其他分布式工具要快得多(svn很慢,甚至cvs有时会更快),比svn更有用的功能,正在快速发展(同时看到svn中的任何新功能需要YEARS)。另一方面,svn非常容易学习和集中(这对某些人来说很重要)。
svn团队专注于自己的议程,很难获得开发人员的支持(与其他开源项目相比),一些bug报告长期存在而没有开发人员的任何兴趣。
我对svn项目的外观及其开发方式感到失望但很好,未来可能会发生变化。
答案 10 :(得分:1)
颠覆的唯一两个缺点我可以想到来自CVS的用户是
第一个可以通过使用svn(+ ssh)来解决,这是与CVS使用自己的协议时更具可比性的格式。 第二个是有点棘手,但可以通过svn:externals(它有自己令人讨厌的副作用)来模仿 如果你遇到任何其他的缺点,我全都耳朵..
答案 11 :(得分:1)
请注意一点:Bazzar,Mercurial等(这里有人建议)都是分布式版本控制系统。我发现使用这些工具管理使用相同源代码的大型程序员几乎是不可能的。在我的公司,我们使用SVN,它做得非常好。
答案 12 :(得分:1)
不知道你为什么要这样做,但是从SVN出发 - > GIT - > CVS可能有效
你要跑..
git svn clone http://thesvnserver ourrepo
然后使用以下指南导出回CVS(不完全确定这将起作用):
http://issaris.blogspot.com/2005/11/cvs-to-git-and-back.html
git cvsexportcommit 4a20cbafdf25a141b31a8333284a332d1a4d6072