English 中文(简体)
SVN标签的最佳实践? [关闭]
原标题:
  • 时间:2008-12-16 19:07:09
  •  标签:
Closed. This question needs to be more focused. It is not currently accepting answers.

想要改进这个问题吗?通过编辑此帖子,更新问题使其仅关注一个问题。

Closed 2 years ago.

我应该将它们作为独立的发布使用吗?我应该将它们检入到主干或分支中吗?这是否都在红皮书中,我刚刚浪费了您的时间?

问题回答

不要忘记,在SVN中,标签和分支本质上是相同的:两者都是svn copy的结果。

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

那个快照(标签)代表的完全取决于你。它可以是:

  • a stable state in the development
  • a mark just before a complicated merge (in order to go back to it if the merge is too complex to be resolved quickly)
  • a release or a patch
  • and so on...

我不确定您所说的“分离版本”是什么意思,但我们从主干或正在构建的分支复制到具有描述性名称的标记文件夹中,例如 Proj-1.20.33。

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

SVN书籍在“常见分支模式”和“标签”章节中有所讲述。

我认识的大多数人,仍在使用SVN,在每次发布之前标记他们的主干(或当前生产分支)。

我更喜欢遵循我标签库目录的结构化。

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

PA means pre-alpha A means alpha B means beta AR means alpha-release BR means beta-release RC means release candidate ST means stable

构建和发布之间存在差异。

  • Tags under builds folder have version number corresponding to a pattern N.x.K, where N and K are integers. Examples: 1.x.0, 5.x.1, 10.x.33
  • Tags under releases folder have version number corresponding to a pattern N.M.K, where N, M and K are integers. Examples: 1.0.0, 5.3.1, 10.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

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





相关问题
热门标签