SVN:维护一个trunk和一个bugfix分支

时间:2011-05-21 07:43:13

标签: svn version-control mercurial

我将描述我想要实现的场景。我对使用Subversion是否可行感兴趣:

  1. 我正在开发一个向公众发布的应用程序。
  2. 使用Jenkins CI服务器构建它并自动上传到Web服务器进行下载。
  3. 我将主要开发工作保留在主干上。主要版本来自行李箱,但它们并不常见(每月2-3个)。
  4. 发布后,我希望能够快速修复任何错误,所以我有一个错误修正分支,它是从最新的主要版本分支出来的。在这里,热修复可以很快(一天之内)解决和发布。
  5. 在每个主要版本发布之后,我希望错误修复分支以某种方式被重新绑定到主干。换句话说,出于实用原因,我不想经常创建新的发布分支:CI服务器保留相同的SVN URL,不需要大量的检出等。
  6. 问题

    1. 每次发布​​后,无需从主干到bugfix分支合并,是否可以进行变基?我担心各种树冲突,因为我做了很多重构代码。
    2. 这样做很简单吗?
    3. 有没有其他策略?我知道我可以切换逻辑并将主要开发工作保留在分支上,但我想避免这种情况,因为大多数代码更改都发生在主干上,这需要较少的合并工作。
    4. 对于这种情况,Mercurial是更好的选择吗?

2 个答案:

答案 0 :(得分:0)

你所做的是一种有效的方法,你的问题是将更改合并到主干上然后合并它们。

首先,当你发布时,在那时创建一个分支 - 这是你发布版本的代码。如果你愿意,你可以直接修改它,这听起来就像你最好的工作方式。当您在那里进行错误修复时,只需将更改直接合并到主干。您不需要重新定义(或重新集成)或任何东西,只需更改已更改的修订并将它们合并到主干上。这非常简单 - 您正在进行SVN提供的最简单的合并(合并一系列修订),只需选择包含所需更改的修订并将它们合并到主干上。

在这种情况下,您可能会遇到冲突,但请记住,svn通过区分源更改并将其应用于目标来执行合并。如果将一半的代码移出另一个文件,然后尝试使用任何工具进行合并,那么您将遇到困难。

Mercurial可能会更好 - 我建议尝试它,创建一个repo,添加一些文件,分支,认真重构你的文件,然后进行一些小改动并将其合并。看看你是否最终遇到了SVN会遇到的类似问题(因为你正在努力做很多工作,而且我认为任何计算机都不会在如此广泛的变化中擅长)。

当然,更好的答案是停止这么多重构您的代码看起来像一个不同的产品!

答案 1 :(得分:0)

我在这个答案中找到了至少部分答案:What are you supposed to do with old SVN branches?

基本上,我可以在每次发布后删除bugfixing分支,然后创建一个具有相同名称的新分支。这是不是一个好习惯,我不知道。