CVS转换为SVN -- 如何替换CVS标签功能

4


我们计划从CVS转移到SVN。
除了我们的开发人员在每次提交时都会进行一个预/后标记之外,一切看起来都很好。
因此,在CVS中,我们没有问题,因为标记是直观且廉价的。
然而,在SVN中,标记是一个复制,对吗?
有了这个说法,我想知道是否有一种方法可以基于修订版本或我在提交之前可以访问的其他内容来执行之前和之后的标记。

4个回答

2
标签是一种复制,但由于Subversion中的修订是基于树形结构的,因此复制的开销要比CVS小得多。请参阅Subversion手册了解详情。 正如Richard的评论所说,在这个页面上有一个框描述了廉价复制。 还有这个网站列出了适用于CVS用户的Subversion顶级技巧。

2
更好的方法是,在 SVN 书籍的这个页面上选中“便宜拷贝”复选框:http://svnbook.red-bean.com/en/1.5/svn.branchmerge.using.html - Richard Dunlap
谢谢Richard,我还没有看过那个。 - Rich Seller

2

关于CVS和SVN标签之间的一些细微差别,可能会在迁移过程中引起一些问题(至少在我的小组中引起了误解)。

在CVS中,标签是您开发的一种时间快照;通常您在HEAD中进行开发,当您达到某种稳定状态并希望将其保存供以后参考时,只需打一个标签。如果您从CVS存储库检出标签版本,则无法修改它,或者更准确地说,可以在本地副本上修改它,但无法提交更改。以某种方式,CVS自动保护其标签免受意外更改

在SVN中,副本只是主干的另一个路径上的副本。如果您从存储库的标记路径检出代码,则仍然可以更改它并将其提交回去。这通常是您不想做的事情,至少如果您认为标签是不应更改的固定开发快照。这就是为什么可以使用特定的钩子脚本强制使标记目录只读(我认为应该真正鼓励这样做)。

希望这对讨论SVN和CVS之间的差异有所帮助(请原谅我的英语)。


1
谢谢Orporick。你的英语很棒! - Avid Coder

1

我不确定我是否正确理解了问题,但是您可以在svn中标记特定的修订版本:

$ svn cp -r <url>/trunk <url>/tags/my_tag

有关更多信息,请参见使用Subversion进行版本控制中的svn复制章节附录B. Subversion for CVS用户也值得一读。


1

标签是虚拟副本。可以将其视为UNIX中的符号链接——这是一种非常低成本的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接