SVN标签的最佳实践?

时间:2008-12-16 19:07:10

标签: svn version-control collaboration

我应该将它们用作单独的版本吗?我是否将它们检入树干或树枝?这一切都在红皮书中,我浪费了你的时间吗?

4 个答案:

答案 0 :(得分:16)

不要忘记标签和branch在SVN中基本相同:两者都是svn copy

的结果

诀窍是,由于标签代表快照,它应该是一个“不可变的”,因为你不应该对它进行任何修改。

该快照(标签)代表什么完全取决于您。它可以是:

  • 发展中的稳定状态
  • 复杂合并之前的标记(如果合并太复杂而无法快速解决,则返回标记)
  • 发布或补丁
  • 等......

答案 1 :(得分:10)

不确定“单独版本”是什么意思,但是我们正在构建的主干或分支复制到带有描述性名称的tags文件夹,如Proj-1.20.33

这样,对于我们所做的每个构建,我们都可以回到该特定版本。通常,您不希望在标记中进行任何实际更改。对于我们来说,我们继续通过自动构建过程更改代码和安装程序的一些版本号,因此只有这些更改才会合并回来,即便如此,这也是修改这些特定文件的唯一方法。

SVN Book在Common Branching PatternsTags条目中对此进行了讨论。

答案 2 :(得分:6)

我知道大多数仍然在SVN上的人都会在每次发布之前标记他们的主干(或当前的生产分支)。

答案 3 :(得分:2)

我更喜欢在构建标记存储库目录之后:

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

PA表示 pre-alpha A表示 alpha B表示 beta AR表示 alpha-release BR表示 beta-release RC表示发布候选人 ST表示稳定

builds 版本之间存在差异。

  • builds 文件夹下的标签的版本号对应于 N.x.K 模式,其中NK是整数。示例:1.x.05.x.110.x.33
  • releases 文件夹下的标签的版本号对应于 N.M.K 模式,其中NM和{{1是整数。示例:K1.0.05.3.1

在存储库结构演变期间的某个特定时刻,10.22.33存储库目录的结果示例如下:

tags

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