我们使用Subversion,除了像我这样的一些人以外,在Subversion中几乎没有分支分支或合并的经验。我的Subversion经验仅限于简单的功能分支,在这些分支中,合并和树冲突虽然并非十分罕见,但并非很难解决。

鉴于此,我正在帮助管理一个项目,在该项目中,我们目前对主干方法的 promise 根本无法满足我们的需求。我向我的本地化团队介绍了功能分支和合并功能,我们取得了一些成功。但是,简单的功能分支仍然无法回答我们所有的问题,例如:

  • 我们如何为该版本和后续版本并行开发代码?
  • 什么代码被认为是稳定的?
  • 下一个发行版中将使用什么(开发中)代码?
  • 后续发行版中将使用什么(开发中)代码?
  • 我们的测试,验收或生产环境是什么版本的代码?
  • 我们如何将并发开发 Activity 与已知的稳定版本集成在一起,以减少引入的错误和不完整的工作?
  • 我们如何为已发布的代码提供修补程序?
  • 我们如何从源代码控制中了解当前正在进行的开发 Activity ?
  • 我们如何在利用杠杆的同时不中断当前代码库的情况下进行实验或研发?

  • 似乎git-flow as defined here可以回答很多这样的问题。我在Mercurial中对该方法进行了实验,似乎也可以在那里实现该方法。令人遗憾的是,此时迁移到DVCS的工作不在桌上。

    但是,我在Subversion中模仿此方法的简短尝试因许多合并和树冲突而失败。合并选项和边缘情况很多而且令人困惑。

    可以使用Subversion实现git-flow吗?如果可以,那么痛苦程度是多少?

    最佳答案

    我们使用所谓的不稳定主干开发方法。这是Subversion的创建者在创建Subversion时所想到的开发方法。它很容易实现。

  • 您可以在主干上进行所有开发。因此称为不稳定主干。
  • 当您接近发行版时,将为该发行版创建一个分支。这样做的想法是使分支足够晚,以使并行开发的时间尽可能短,但不要太晚,以至于某些开发人员无法完成工作,因为他们不再需要使用当前版本,而是需要开始开发最新版本。下一个版本。在敏捷中,这通常在紧缩冲刺之前完成。通常在发行版功能完善时完成,现在您正在修复错误。
  • 释放发生在分支之外。您标记分支。如果需要修补程序,则可以在分支机构之外完成。

  • 这是一个工作原理:
  • 想象您正在开发1.2版。您正在树干上。现在,您正接近即将发布版本1.2的时间,而版本1.2上的工作不足以使开发人员忙。您为发行版创建一个1.2分支。
  • 现在,仍在处理版本1.2的人员将切换到版本1.2分支。同时,从事1.3版开发的开发人员可以继续使用。
  • 您现在准备发布1.2版。您在分支上标记了Release 1.2。分支不会合并回主干。该主干用于版本1.3。
  • 报告了错误,并且您想在版本1.2.1中修复它们。您继续关闭1.2分支。 1.2.1不需要新的分支。 (您可以锁定发行版之间的分支,以保持其纯净。
  • 当您准备发布1.3版时,请重复此过程-分支1.3,并继续在主干上进行1.4的工作。

  • 会有一些合并。这主要是将发布分支上修复的缺陷合并回主干。有以下三种选择:
  • 发布后,您会将分支上的所有更改合并回主干。跟踪很少。您只是假设分支上的所有错误修复程序也适用于干线。
  • 您使用的跟踪系统可以了解多个发行版中可能存在的问题。在这种情况下,您只需将在分支上发现的错误也标记为中继。由于您的问题跟踪系统,您可以选择适用于中继的更改。
  • 有些站点根本不会合并。他们还通过缺陷跟踪系统跟踪需要应用到分支上的主干上的更改,并简单地重新实现它们。他们可能将更改从分支复制到主干,但从未进行正式合并。但是,一旦执行此操作,就无法合并(除非与--record-only标志合并)。

  • 您当然会意识到这种方法需要进行规划。您必须确定工作的优先级,以便开发人员在开发将来的版本之前先完成即将发布的版本的工作。仅当您对即将发布的版本不再有足够的工作来使所有开发人员忙碌时,您才分支。

    您可以实现标准的Git工作流程,该工作流程针对每个开发人员或问题使用单独的开发分支,然后将这些更改交付到主干。这将需要很多分支,每个开发人员/功能都需要一个分支。

    您首先要从主干合并到分支以重新构建代码基础。完成基础调整后,您可以使用--reintegrate开关从分支合并回主干。在1.6之前的版本中,由于--reintegrate困惑了合并跟踪,因此您假设要删除该分支并重新创建它。但是,此问题已在版本1.6.x及更高版本中修复。

    关于svn - 可以在Subversion中使用git-flow模型吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13345667/

    10-11 23:02
    查看更多