CVS到SVN转换 - 如何替换CVS TAGS功能

时间:2009-07-15 19:49:40

标签: svn tags cvs commit


我们正计划从CVS转向SVN。
一切看起来都很好,我们的开发人员会在每次提交时都做一个前/后标记 因此,在CVS中我们没有问题,因为TAGS直观且便宜 但是,在SVN中,Tag是副本吗?
话虽如此,我想知道是否有一种方法可以让我根据我在提交之前访问的修订版或其他内容执行前后标记。

4 个答案:

答案 0 :(得分:2)

标签是副本,但由于修订是基于Subversion的树,因此副本的开销远低于CVS。有关详细信息,请查看Subversion book。 正如理查德的评论所说,page上有一个描述便宜副本的方框。 还有site列出了Subversion对CVS用户的最佳提示。

答案 1 :(得分:2)

关于CVS和SVN标签之间的细微差别只是一个小小的评论,这可能会导致迁移中出现一些问题(至少它会导致我的小组出现误解)。

在CVS中,标签是您的开发的一种时间快照;你通常在发展中 你的HEAD,当你达到一种你希望保存以供以后参考的稳定情况时,你只需做一个标记。如果从CVS存储库中签出标记版本,则无法对其进行修改,或者更好地说,可以在本地副本上修改它,但是您无法提交更改。在某种程度上,CVS会自动保护其标签免受意外更改

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

希望它能有助于讨论SVN和CVS之间的差异(请为我的英语道歉)。

答案 2 :(得分:1)

我不确定我是否正确理解了这个问题,但你可以在svn中标记一个特定的修订:

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

有关详细信息,请参阅使用Subversion进行版本控制中的chapter on svn copyAppendix B. Subversion for CVS Users也可能值得一读。

答案 3 :(得分:1)

标签是虚拟副本。可以把它想象成UNIX中的符号链接 - 这是一个非常低成本的操作。