【问题标题】:What do you deploy to clients SVN branches or tags您将什么部署到客户端 SVN 分支或标签
【发布时间】:2010-09-30 14:04:40
【问题描述】:

不久前,我们使用 Microsoft VSS 作为我们的版本控制工具,并用于在每个版本结束后创建代码分支并将其部署到我们的客户。

现在我们已经转移到 SVN,最近有很多关于标签/分支的讨论,我们是否应该在开发特定版本后标记/分支我们的代码?

SVN 实际上为此推荐了“标签”,但也建议不要进一步对其进行任何更改,那么我们将在哪里修复此版本中出现的令人发指的错误?

正在做的另一件事是创建标签和分支,将标签部署到客户端,如果出现任何错误,将对分支进行修复,然后再次添加标签:-(

其他人在做什么?

【问题讨论】:

    标签: svn tags release-management branch


    【解决方案1】:

    在代码行的特定版本(例如主干)上创建一个标签,并且总是从您的标签中发布。 svn 中的标签虽然不是由 svn 本身强制执行的,但它是快照和参考点。利用这个隐含的概念,只发布从您和其他人知道对应于特定版本的标签创建的构建。

    使用分支将维护补丁提交到特定版本(例如,如果您需要修补您的版本,则从您的标签创建一个分支)并通过在您发布时标记您的分支来为您的补丁遵循相同的做法。

    【讨论】:

      【解决方案2】:
      1. 当你发布一个版本时,为它创建一个标签。例如,release-1.1.0
      2. 如果您对该版本有错误修复/更改,请首先从该标记创建一个分支,即“稳定分支”,通常以“.x”作为最后一个版本号命名。例如,stable-1.1.x
      3. 将错误修复/更改从主干合并到稳定分支
      4. 将更改提交到稳定分支
      5. 一旦您觉得稳定分支上有足够的错误修复/更改来证明新版本的合理性,请从稳定分支创建一个标签,例如 release-1.1.1
      6. 继续在主干上工作,将错误修复合并回稳定分支
      7. 重复 3-6

      【讨论】:

      • @Stefan - 你能详细说明第 3 行吗?如果您的主干包含新功能或与 1.1.0 版本不兼容,通过合并您不是将它们强制到 1.1.0 版本中吗?
      • 不进入 1.1.0 标签,你应该将它们合并到 stable-1.1.x 分支。但当然,只有您希望在下一个次要版本中进行的更改(即“release-1.1.1”)
      • @Stefan - 谢谢;但是,如果您有更新的版本(即 2.1.0)会发生什么,合并不会将其中的功能放入 release-1.1.1 中吗?
      • 仅当您专门将这些更改合并到该分支时。如果您有更新的版本,那么您还(应该)有一个标签和另一个稳定的分支(例如 release-2.1.0 和 stable-2.1.x),然后合并您的更改。
      • 嗨 Stefan,这是一个附带问题,但是您知道在 SVN 中标记发布时可以部署代码的任何 CI 服务器吗?我正在使用 CruiseControl.Net,但我没有看到这个触发器。谢谢!
      【解决方案3】:

      由于源代码控制概念在这里仍然很新,尤其是 SVN,所以我们单独使用主干。在我们有不应该上线的提交之前工作得很好,而当时部署的人并没有意识到这一点。

      一旦这里的每个人都对 SVN 感到满意,并且我可以找到至少一个熟悉合并的其他人,我将设置一个“实时”分支,所有批准的生产提交都可以合并到该分支中。

      标签很好,因为您可以为开发周期命名,“beta”、“alpha”、“release Candidate 1”等。但最重要的是,您需要一个可以在生产环境中使用的好的分支.标签只是让确定里程碑变得更容易。

      【讨论】:

        【解决方案4】:

        在 Subversion 中,它们是相同的——它们以相同的方式实现并且结果相同(除了您的 repo 层次结构)。它们只是对存储库特定版本的引用。没有制作真正的副本。当你开始在一个分支上工作时(真正意义上的),那么你就是在一个新的地方使用该资源的一个新副本。

        如果/当你需要的时候,你总是可以从一个标签中创建一个分支,所以没有理由创建一个分支和一个标签。

        如果它可以帮助您保持一致,那就继续做吧,但实际上在您开始签入/对分支进行修订之前它什么也没做。

        (标签/分支都是用 cp 命令创建的)

        【讨论】:

        • 在工作中添加此标签的约定是标签是永久的,但分支仅用于更改/修复
        • 是的 - 这就是意图,以及这些词的传统含义。 svn 书也暗示了这一点。
        • 我不想承认这一点,但我终于明白最好(最简单和最清晰)的方法是先标记,然后从标记分支(而不是从主干)。不过,真正的删除在某些时候会很好,因为它们可以累积。
        【解决方案5】:

        是的,您通常会创建一个与主干平行的维护分支,并在其中标记错误修复版本。

        【讨论】:

          【解决方案6】:

          发布分支上的标签。

          【讨论】:

            猜你喜欢
            • 2014-05-13
            • 1970-01-01
            • 1970-01-01
            • 2017-04-08
            • 2011-12-03
            • 2012-10-19
            • 2012-03-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多