我在svn领域长时间露营后开始使用集市。我之前也有使用cvs的经验,偶尔也会使用标签。
使用svn,一旦发布版本,就可以将trunk的svn副本执行到标记中,例如svn copy trunk tags / 1.2.0。在集市中我创建了相同的存储库结构,但缺少bzr复制选项和bzr标记的存在让我思考。
事实是我发现标签难以使用或无用。 如果我使用标签,我基本上将我的主干作为唯一目录,当我达到里程碑时,我会标记它。然后,当达到新的里程碑时,我会继续开发和标记。这使以下任务复杂化:
因此,我在bzr中使用相同的svn repo结构,并且每次都执行主干的物理副本。这意味着在这种安排中我没有看到任何真正使用bzr标记命令。为什么我应该用版本号标记整个repo版本,如果它包含每个版本的所有版本?
有人可以指出我在使用和理解bzr回购标签时遇到的错误吗?
修改
因此,据我所知,每个版本都有不同的bzr分支(独立分支,来自主干通过bzr分支)。它就像svn,只是你没有把根目录放在存储库中。除了事实之外,如果你说的话,我仍然没有看到任何特殊的标签原因 FOO-1.0.0 FOO-1.0.1 FOO-2.0.0 FOO-2.1.0 躯干
并假设我总是在分支之前标记版本,trunk将为所有这些版本添加标签,而foo-2.0.0将在其标签中包含foo-1.0.0,但不包括foo-1.0.1,因为它是从FOO-1.0.0。
我仍然没有真正看到拥有和使用标签的必要性。我的标签隐含在我为该分支选择的目录名中。我对特定版本号并不感兴趣,我只是对它进入特定目录感兴趣。
答案 0 :(得分:12)
bzr中的标签是什么?
标签只是一个易于记忆的特定修订手柄。您可以参考自己的代码,而不是试图记住david@hrcsb.org-20090420170402-eql4vzvcifkz4fwy
或revno 19721
:
bzr export -r tag:foo-1.0.0.0 release-foo-1.0.0.0.tar.gz trunk/
我如何管理bzr中的版本?
听起来好像你将你的版本视为单独的开发线(又名:分支机构),所以我建议你标记你的主干,这样你就知道从哪里分支并创建单独的发布分支:
bzr tag -r 1234 -d trunk/ foo-1.0.0.0
bzr branch -r 1234 trunk/ release-1.x
当您为1.x版本执行错误修正时,您可以在release-1.x分支中执行它们,标记每个版本:
bzr tag -r 1255 -d release-1.x/ foo-1.0.0.1
bzr export -r tag:foo-1.0.0.1 release-foo-1.0.0.1.tar.gz release-1.x/
您的目录结构可能如下所示:
fooproj/
release-1.x/
release-2.x/
trunk/
答案 1 :(得分:8)
嗯,基本上,你不应该尝试复制SVN目录结构。我不知道为什么SVN会这样,但基本上标签只是bzr存储库中某个时间点的标记。当您想要对标记进行区分时,可以像
那样进行bzr diff -r tag:TAG_NAME
因此,无论何时发布,只需标记并继续发布即可。没什么特别的,比如把东西搬到特定的文件夹或任何东西。
我建议你开始使用单独的分支而不是标签来表示你想要回到的东西,比如代码的2.0.x行,所以你有一个2.0.x的分支然后标签如2.0.0和2.0.1。
答案 2 :(得分:1)
svn中的标签更像是svn分支。您已经描述了很好地映射到bzr分支的工作流程。标签允许你有一个分支指向你的版本,所以任何人都可以从trunk获得完全发布的版本:
bzr branch trunk foo-1.0 -r tag:1.0