【发布时间】:2009-04-22 12:20:57
【问题描述】:
在 svn 领域长期露营后,我开始使用 bazaar。我以前也有过 cvs 的经验,偶尔也会用到标签。
使用 svn,一旦你发布了一个版本,你就可以将你的 trunk 复制到标签中,例如 svn copy trunk tags/1.2.0 。在 bazaar 中,我创建了相同的存储库结构,但是没有 bzr 复制选项和 bzr 标签的存在让我思考。
事实上,我发现标签要么很难使用,要么没用。 如果我使用标签,我基本上将我的主干作为唯一的目录,当我达到里程碑时,我会对其进行标签。然后,当达到新的里程碑时,我会继续开发和标记。这使以下任务变得复杂:
- 递归比较新版本和旧版本(使用类似 svn 的方法:diff --brief -r)
- 修复旧版本错误,并创建新版本并增加其补丁版本(使用类似 svn 的方法:svn 复制 2.0.0 2.0.1,然后将修复添加到 2.0.1 并提交)
- 无需检查即可获得所需的版本(如果您以类似 svn 的方式检查整个树,则您拥有所有版本和分支,并且只需执行一次)
因此,我在 bzr 中使用了相同的 svn repo 结构,并且每次都对主干进行物理复制。这意味着在这种安排中我看不到 bzr tag 命令的任何实际用途。如果每个版本都包含所有版本号,为什么我应该用版本号标记整个 repo 版本?
谁能指出我在使用和理解 bzr repo 的标签时做错了什么?
编辑
据我所知,每个版本都有不同的 bzr 分支(独立分支,来自主干通过 bzr 分支)。它就像svn,只是你没有将根目录放在存储库中。我仍然没有真正看到标签的任何特殊原因,除了事实上,如果你说 foo-1.0.0 foo-1.0.1 foo-2.0.0 foo-2.1.0 后备箱
假设我总是在分支之前标记发布,主干将为所有这些标记,而 foo-2.0.0 在其标记中将有 foo-1.0.0,但没有 foo-1.0.1,因为它是从foo-1.0.0.
我仍然没有真正看到拥有和使用标签的必要性。我的标签隐含在我为该分支选择的目录名称中。我对特定的版本号并不真正感兴趣,我只是对它在特定目录中感兴趣。
【问题讨论】:
标签: svn version-control bazaar