SVN标签的最佳实践?

SVN标签的最佳实践?,svn,version-control,collaboration,Svn,Version Control,Collaboration,我应该将它们作为单独的版本使用吗?我是把它们放回树干还是树枝?这些都在红皮书中吗?我只是浪费了你的时间?不确定你所说的“单独发布”是什么意思,但我们从正在构建的主干或分支复制到带有描述性名称的标记文件夹中,如Proj-1.20.33 这样,对于我们所做的每个构建,我们都可以回到那个特定的版本。通常,您不希望对标记进行任何真正的更改。对于我们来说,我们会继续通过我们的自动构建过程更改代码和安装程序的一些版本号,因此只有这些更改会被合并回来,即使这样,这也是修改这些特定文件的唯一方法 《SVN手册》

我应该将它们作为单独的版本使用吗?我是把它们放回树干还是树枝?这些都在红皮书中吗?我只是浪费了你的时间?

不确定你所说的“单独发布”是什么意思,但我们从正在构建的主干或分支复制到带有描述性名称的标记文件夹中,如Proj-1.20.33

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


《SVN手册》和条目中对此进行了一些讨论。

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

不要忘记,标签和a在SVN中本质上是一样的:两者都是
SVN copy

诀窍在于,由于标记表示快照,因此它应该是“不可变”的,因为您不应该对其进行任何修改

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

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

我更喜欢我的标签存储库目录的以下结构:

/tags
    /builds
        /PA
        /A
        /B
    /releases
        /AR
        /BR
        /RC
        /ST
PA
表示阿尔法前期
A
表示alpha
B
表示beta
AR
表示α释放
BR
表示测试版
RC
表示发布候选版本
ST
表示稳定

构建和发布之间存在差异

  • “生成”文件夹下的标记具有与模式
    N.x.K
    对应的版本号,其中
    N
    K
    是整数。示例:
    1.x.0
    5.x.1
    10.x.33
  • releases文件夹下的标记具有与模式
    N.M.K
    对应的版本号,其中
    N
    M
    K
    是整数。示例:
    1.0.0
    5.3.1
    10.22.33
在存储库结构演变过程中的某个特定时刻,
标记
存储库目录的结果结构示例如下:

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