SVN标签的最佳实践是什么?

13

我应该将它们作为单独的发布版本使用吗?我要将它们检入主干或分支吗?这是否都在红皮书中,我只是浪费了你的时间?

4个回答

18
不要忘记,在SVN中,标签和branch本质上是相同的东西:都是 svn copy 的结果。
诀窍在于,由于标签表示快照,因此它应该是“不可变”的,也就是说,您不应对其进行任何修改。
那个快照(标签)代表的完全取决于你。它可以是:
- 开发中的稳定状态 - 复杂合并之前的标记(以便在合并过程太复杂无法快速解决时返回到它) - 发布或补丁 - 等等...

10

不确定您所说的“分离版本”是什么意思,但我们会从主干或分支中复制需要构建的代码并放入带有描述名称(例如 Proj-1.20.33)的标签文件夹中。

这样,对于我们创建的每个构建版本,我们可以回到该特定版本。通常,您不希望在标签中进行任何实际更改。对于我们而言,我们通过自动化构建过程更改一些代码和安装程序的版本号,因此只有这些更改才会被合并回来,即使这样,只有这些特定文件才会被修改。

《SVN Book》在其Common Branching PatternsTags条目中介绍了这一点。


6

我认识的大多数仍在使用SVN的人在每次发布之前对其主干(或当前生产分支)打标签。


2

我更喜欢按照以下方式组织我的标签存储库目录:

/tags
    /builds
        /PA
        /A
        /B
    /releases
        /AR
        /BR
        /RC
        /ST

PA 表示预阶段 A 表示Alpha版 B 表示Beta版 AR 表示Alpha发布版 BR 表示Beta发布版 RC 表示发行候选版 ST 表示稳定版

构建版本发布版本有所不同。

  • 构建版本文件夹下的标签具有与模式N.x.K相对应的版本号,其中NK是整数。例如:1.x.05.x.110.x.33
  • 发布版本文件夹下的标签具有与模式N.M.K相对应的版本号,其中NMK是整数。例如:1.0.05.3.110.22.33

在某个特定时间点上,tags存储库目录的结果结构示例如下:

/tags
    /builds
        /PA
            /1.x.0
            /1.x.1
        /A
            /1.x.2
        /B
            /1.x.3
            /1.x.4
    /releases
        /AR
            /1.0.0
            /1.1.0
        /BR
            /1.0.1
            /1.0.2
            /1.1.1
        /RC
            /1.0.3
            /1.1.2
        /ST
            /1.0.4
            /1.1.3

实际上,这种标记原则只是存储库结构方法的一部分。您可能会发现图表有用,它说明了我所描述的标记原则。此外,它还包含了更复杂的配置管理流程概述,包括分支和版本编号。

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