我的团队现在使用持续集成一段时间,使用'一切顺利进入'的方法。我们正在调查改变这种做法,以便我们在准备好后立即发布各个功能,而不必等待其他功能赶上(我们有多个团队同时处理不同的功能)。有很多关于如何使用分支策略(每个功能的分支等),使用git等来做这个的例子,这可能是我的首选方法。但是管理人员已经要求我们至少调查其他选项,因为担心的是分支策略可能会导致延迟集成点,我们希望避免这种情况。我不希望这个讨论CI /分支策略,所以我会尝试在我的问题中具体说明。
有没有人在准备好时使用任何策略来释放功能,而不运行多个版本控制分支?例如,使用Branching by Abstraction或其他一些方法在单个分支中具有不同“准备就绪”状态的功能。如果有人有这种方法的经验(好的或坏的),我很想知道。
答案 0 :(得分:1)
对于具有遗留架构的大型项目,branching by abstraction机制无法轻松扩展,因为所谓的“抽象层”并不总是容易/快速引入以隔离您的更改。
但是,本文中提到的另一个想法是很少的分支,只有提交代表准备部署的应用程序。
由于发布机制(DVCS (Decentralized VCS like Git or Mercurial)),这是orthogonal to branching可以轻松容纳的内容,并允许:
这并不妨碍其他中间存储库的推进,以便共享中间工作,但由于所述工作已在官方分支机构的本地重新定位,即使可以部署和测试开发工作。
答案 1 :(得分:0)
尝试一种社交工程方法,让管理者不要使用分支 - 将GIT与其自己的GIT克隆中的每个功能一起使用,并在准备就绪时推送到发布克隆中。 拥有CI克隆以确保团队开发功能。
所以工作流程,开始一个新功能
克隆CI回购 实施功能,定期从CI回购中提取 CI仓库的最终拉动,然后将功能推入CI 将CI中的功能推送到发布回购。
如果需要,可以将所有功能提交归为一个大提交,或以其他方式跟踪,以便可以轻松选择它们以推送系统。
使用此解决方案,您将永远不需要创建分支。