有没有办法在不使用版本控制分支的情况下“准备好”时开发/发布功能?

时间:2011-04-11 10:46:31

标签: version-control continuous-integration branch

我的团队现在使用持续集成一段时间,使用'一切顺利进入'的方法。我们正在调查改变这种做法,以便我们在准备好后立即发布各个功能,而不必等待其他功能赶上(我们有多个团队同时处理不同的功能)。有很多关于如何使用分支策略(每个功能的分支等),使用git等来做这个的例子,这可能是我的首选方法。但是管理人员已经要求我们至少调查其他选项,因为担心的是分支策略可能会导致延迟集成点,我们希望避免这种情况。我不希望这个讨论CI /分支策略,所以我会尝试在我的问题中具体说明。

有没有人在准备好时使用任何策略来释放功能,而不运行多个版本控制分支?例如,使用Branching by Abstraction或其他一些方法在单个分支中具有不同“准备就绪”状态的功能。如果有人有这种方法的经验(好的或坏的),我很想知道。

2 个答案:

答案 0 :(得分:1)

对于具有遗留架构的大型项目,branching by abstraction机制无法轻松扩展,因为所谓的“抽象层”并不总是容易/快速引入以隔离您的更改。

但是,本文中提到的另一个想法是很少的分支,只有提交代表准备部署的应用程序。
由于发布机制(DVCS (Decentralized VCS like Git or Mercurial)),这是orthogonal to branching可以轻松容纳的内容,并允许:

  • 不发布(不推送)在本地存储库中进行的私有提交(因此您可以根据需要进行分支/实验,更重要的是,您可以在官方分支机构之前rebase your work经常非常快速地确保你的工作与工作申请不同)
  • 发布(推送)您的工作,一旦准备好,只在唯一存储库上的“主干”或“发布”分支上,作为所有“准备部署”的修订的参考。

这并不妨碍其他中间存储库的推进,以便共享中间工作,但由于所述工作已在官方分支机构的本地重新定位,即使可以部署和测试开发工作。

答案 1 :(得分:0)

尝试一种社交工程方法,让管理者不要使用分支 - 将GIT与其自己的GIT克隆中的每个功能一起使用,并在准备就绪时推送到发布克隆中。 拥有CI克隆以确保团队开发功能。

所以工作流程,开始一个新功能

克隆CI回购 实施功能,定期从CI回购中提取 CI仓库的最终拉动,然后将功能推入CI 将CI中的功能推送到发布回购。

如果需要,可以将所有功能提交归为一个大提交,或以其他方式跟踪,以便可以轻松选择它们以推送系统。

使用此解决方案,您将永远不需要创建分支。