我的公司无意中从cvs切换到颠覆,现在我们都希望我们有cvs回来.我知道有一些工具可以将历史记录和变化从cvs迁移到svn,并且没有相应的工具可以反过来.有关如何执行此操作的任何建议或想法?
我最初将此作为对其他人答案的评论添加,但后来意识到这是一个答案,各种各样.之前我已经完成了这些类型的转换,其中没有现成的方法可以从一个SCM系统转换到另一个SCM系统.
编写一个从SVN存储库获取提交列表的脚本并不是火箭科学,并且一次一个地迭代它们,将它们合并到新创建的CVS存储库中.让所有分支和标签完全正确可能需要更多工作,但如果您只想保存几个分支的修订历史记录,那应该非常简单.
我也认为你不会通过切换回CVS获得任何东西,但如果你想这样做,那么你可能会编写自己的脚本.毫无疑问,"svn export"命令在这项工作中是有用的.
那么你的公司不喜欢SVN和CVS做得更好的是什么?SVN的设计人员竭尽全力使SVN体验与CVS非常相似.如果您使用Tortoise客户端作为前端,体验非常相似.SVN为您提供原子提交,虽然不太符合Perforce的标准,但却在CVS前面.
我必须同情你的困境.我将开发团队和IT团队从CVS升级到SVN.我得到了所有正确的python脚本来升级所有版本历史记录,我们已经愉快地使用SVN近4年了.大约三个月前,IT团队负责人决定从SVN"升级"他的所有项目,猜猜是什么?这是正确的,版本控制系统的重型升降机:SourceSafe!
我绝对会坚持使用SVN,甚至可以查看一些较新的分布式系统,例如Mercurial.使用这些系统,没有中央服务器.他们依靠能够跨越数十个或数百个同行进行分支和合并.您可以定义自己的拓扑,例如,您可以将特定对等体指定为执行每日构建的对等体.
我不认为这些工具是朝着另一个方向发展的,因为对它的要求并不高.
如果你真的必须这样做,那么编写一个遍历SVN repo历史的脚本,获取每个修订并将其提交给CVS应该不是很难.
顺便说一下,我真的很想知道你对SVN有什么问题.
不是升级.不要这样做.
说真的,为什么你更喜欢CVS到SVN?CVS实际上是一个假装允许团队在没有明确沟通的情况下工作的玩具.真的太可怕了.
如果出于某种原因需要SVN以外的东西,请查看其他版本控制系统.有很多,它们几乎都比CVS好(事实上,只有Visual Source Safe就差了).
SVN并不好.SVN优于CVS.如果你想更改结账Mercurial,GIT,Bazaar.
在所有这些其他答案引起你的注意时,git的一个方面还没有被讨论过:git提供了一个cvs服务器模拟,这样你就可以迁移到git(svn到git很容易并得到很好的支持)以后再使用cvs服务器接口,用于以集中方式访问存储库.没有人知道你在后台使用git而你不必处理分布式备份问题.
您的选择可能实际上受到限制。请记住,CVS的积极开发是在不久前停止的,因此CVS开发人员可能没有适合您的工具。而且由于svn的主要目标之一是成为一个更好的CVS,因此这些开发人员可能也不会期望有人退缩。
但是,如果您不喜欢颠覆,为什么不看看更现代的分布式系统(git,mercurial等)呢?