我们计划从 CVS 转移到 SVN。
一切看起来都不错,希望我们的开发人员在每次提交时都做一个前置/后置标签。
因此,在 CVS 中我们没有问题,因为 TAGS 直观且便宜。
但是,在SVN中,Tag是一种版权吗?
话虽如此,我想知道是否有办法让我根据修订或我在提交之前可以访问的东西来做一个前后标签。
4 回答
标签是一个副本,但由于 Subversion 中的修订是基于树的,因此副本的开销远低于 CVS。查看Subversion 手册了解详细信息。正如理查德的评论所说,此页面上有一个描述廉价副本的框。还有这个站点列出了 CVS 用户的 Subversion 顶级技巧。
只是关于 CVS 和 SVN 标签之间的细微差别的小评论,这可能会导致迁移中的一些问题(至少它在我的小组中引起了误解)。
在 CVS 中,标签是您开发的一种时间快照;你通常在你的 HEAD 中发展,当你达到一种想要保存以供以后参考的稳定情况时,你只需做一个标记。如果您从 CVS 存储库签出一个标记版本,则它不能被修改,或者更好地说,它可以在您的本地副本上进行修改,但您不能提交回更改。CVS 以某种方式自动保护其标签免受意外更改
SVN 中的副本只是另一个路径中的主干副本.. 如果您从存储库中的标记路径签出代码,您仍然可以更改它并将其提交回来;这通常是您不想做的事情,至少如果您将标签视为不应该更改的开发的固定快照。这就是为什么可以使用特定的钩子脚本强制标签目录为只读的原因(在我看来应该非常鼓励)。
希望它有助于讨论 SVN 和 CVS 之间的差异(请为我的英语道歉)。
我不确定我是否正确理解了这个问题,但是您可以在 svn 中标记特定的修订:
$ svn cp -r <url>/trunk <url>/tags/my_tag
有关更多信息,请参阅带有 Subversion的版本控制中有关 svn copy 的章节。附录 B. CVS 用户的 Subversion也值得一读。
标签是一个虚拟副本。可以把它想象成 UNIX 中的符号链接——这是一种成本非常低的操作。