有什么合理的方法可以从Subversion迁移到CVS?

时间:2020-03-06 15:00:00  来源:igfitidea点击:

我的公司在不知不觉中从CVS转向Subversion,现在我们都希望CVS回归。
我知道有将历史记录和更改从cvs迁移到svn的工具,并且没有相反的方法。
有关如何执行此操作的任何建议或者想法?

解决方案

没有升级。不要这样做。

说真的,为什么我们会更喜欢CVS而不是SVN?从字面上看,CVS就是一个玩具,它假装允许团队在没有明确沟通的情况下工作。真的很糟糕。

如果出于某种原因我们需要除SVN之外的其他东西,请查看其他版本控制系统。有很多,而且它们几乎都比CVS更好(实际上,只有Visual Source Safe才差)。

当你只有锤子时,一切看起来都像钉子。

最好的选择是学习SVN,它将使知识更加丰富。

SVN不好。
SVN比CVS更好。
如果我们想更改Checkout Mercurial,GIT,Bazaar。

我认为这些工具不存在朝着其他方向发展的趋势,因为对它的需求并不多。

如果确实需要这样做,那么编写遍历SVN存储库历史记录,获取每个修订并将其提交给CVS的脚本并不难。

顺便说一句,我真的很想知道我们对SVN有什么问题。

选择可能实际上受到限制。请记住,CVS的积极开发是在不久前停止的,因此CVS开发人员可能没有适合工具。而且由于svn的主要目标之一就是成为一个更好的CVS,因此这些开发人员可能也不会期望有人退缩。

但是,如果我们不喜欢颠覆,为什么不看看更现代的分布式系统(git,mercurial等)呢?

那么,公司非常不喜欢SVN的是什么,而CVS表现得更好呢? SVN的设计者竭尽全力使SVN体验与CVS相当相似。如果我们将Tortoise客户端用作前端,则体验非常相似。 SVN为我们提供了原子提交,尽管还不完全符合Perforce的标准,但它却比CVS领先。

我必须同情你的困境。我将我们的开发团队和IT团队从CVS升级到了SVN。我拥有所有正确的python脚本来升级所有版本历史记录,并且我们已经愉快地使用SVN近4年了。大约三个月前,IT团队负责人决定从SVN"升级"他的所有项目,以猜测是什么?没错,版本控制系统的重型起重器:SourceSafe!

我一定会坚持使用SVN,甚至会研究一些较新的分布式系统,例如Mercurial。对于这些系统,没有中央服务器。他们依靠能够跨数十或者数百个同行进行分支和合并。我们定义了自己的拓扑,因此,例如,我们可以将特定的对等体指定为执行日常构建的对等体。

同意下士Touchy。

SVN比CVS更好,因为它被设计为大致相同,只是具有一些简化和新功能。

使用Svn,我们可以移动/重命名文件而不会丢失其历史记录;我们可以获得更安全的提交(提交是原子操作)和全局修订。

无论如何,在转回CVS之前,先尝试更好地了解它,甚至更好地,尝试真正地了解作为存储库团队的需求。

PS:我认为下士正在谈论Mercurial

我最初将此添加为对其他人的答案的评论,但后来意识到这是某种答案。之前,我已经完成了这类过渡,目前尚无从一种SCM系统转换为另一种SCM系统的方法。

编写脚本来获取SVN存储库中的提交列表,然后一次遍历它们,然后将它们合并到新创建的CVS存储库中,这并不是火箭科学。要使所有分支和标签完全正确,可能还需要做更多的工作,但是,如果我们只想保存几个分支的修订历史,则应该很容易。

我还认为,切换回CVS并不会带来任何好处,但是如果我们愿意,那么我们可能会编写自己的脚本。毫无疑问," svn export"命令将在此过程中有用。

我能想到的来自CVS的用户的Subversion仅有的两个缺点是

  • 通过http(s)结帐的速度
  • 缺乏模块化

第一个可以通过使用svn(+ ssh)来解决,因为CVS也使用它自己的协议,所以它是更可比的格式。
第二个有点棘手,但是可以由svn:externals模仿(它们有自己的讨厌的副作用)
如果我们还遇到其他任何弊端,我将不胜感激。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。的。

svn应该比cvs更好,但在某些方面效果不佳。其他分布式工具要快得多(svn慢得多,有时甚至cvs有时也可以更快),比svn具有更多有用的功能,并且发展迅速(尽管看到svn中的任何新功能都需要YEARS)。另一方面,svn非常易于学习和集中化(这对某些人而言很重要)。

svn团队专注于自己的议程,很难获得开发人员的支持(与其他开源项目相比),一些错误报告已存在很长时间,而开发人员没有任何兴趣。

我对svn项目的外观和开发方式感到失望,但情况可能会在将来发生变化。

只需注意一点:Bazzar,Mercurial等(在这里有人建议)都是分布式版本控制系统。我发现使用这些工具来管理大量使用相同源代码的程序员几乎是不可能的。在我的公司中,我们使用SVN,而且做得很棒。

git的一个方面在所有其他答案中都已引起注意:git提供了cvs服务器仿真,因此我们可以迁移到git(将svn转换为git很容易并且得到很好的支持),以后再使用cvs服务器界面,用于集中访问存储库。没人知道我们在后台使用git,也不必处理分布式备份问题。

不知道为什么要这么做,但是从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

还有git cvsserver