在 gitflow 工作流中处理拉取请求的工作流(不经常发布)?
Workflow for handling pull requests in a gitflow workflow (with infrequent releases)?
我们之前的工作流程类似于gitflow,一切都从master分支出来,master总是反映生产。准备发布时,功能分支将合并到主分支中,修复不同功能之间可能存在的冲突,为发布创建标签,推送到主分支,仅此而已。
所以现在我们想将拉取请求集成到这个工作流程中,但让分支的开发人员继续负责解决冲突。当时的想法是仍然从 master 分支出来,然后向一个名为 releaseX 的新分支发出拉取请求,所有将进入下一个版本的新代码都在这里。
问题是当新特性和其他特性在releaseX上有冲突时,开发者是如何解决的?在 github 中进行合并本身是不可接受的,将 releaseX 合并到功能分支中也是不可接受的(它会引入不相关的功能,并且最终会使功能更难不投入生产)。
我们最终只为合并创建了一个分支,类似于 resolution/releaseX_my_beautiful_feature。
(目前,更多地遵循 githubflow 之类的模型(而不是 gitflow),持续部署并且没有真正的发布概念,对我们来说不是最好的解决方案。)
你们在使用拉取请求和发布时采用什么工作流程?
正如@ckrusek 所说,Atlasssian 有一份关于不同类型工作流程的很好的文档。关于 gitflow + 拉取请求工作流程,他们推荐的是:
- 功能分支开发
- 功能做拉请求开发
- 发布分支开发(分支命名约定:release-* 或 release/*)。发布分支仅用于准备发布,任何尚未开发的功能将推迟到下一个发布周期。
- 将发布分支合并到 master 和开发中
- maintenance/hot-fixes 分支 branch off master
- maintenance/hot-fixes 个分支合并到 master 和 develop
当然,还是没办法不在develop中混入不相关的特性到我们的特性分支中。
基本上,拉取请求工作流意味着更频繁的发布,为了处理这些,我们需要有功能标志,以便在需要时关闭生产中未经充分测试的功能。这个模型给我们带来的是一个工作流程,它确实包含了发布的概念和管理它们的方法。
我们之前的工作流程类似于gitflow,一切都从master分支出来,master总是反映生产。准备发布时,功能分支将合并到主分支中,修复不同功能之间可能存在的冲突,为发布创建标签,推送到主分支,仅此而已。
所以现在我们想将拉取请求集成到这个工作流程中,但让分支的开发人员继续负责解决冲突。当时的想法是仍然从 master 分支出来,然后向一个名为 releaseX 的新分支发出拉取请求,所有将进入下一个版本的新代码都在这里。
问题是当新特性和其他特性在releaseX上有冲突时,开发者是如何解决的?在 github 中进行合并本身是不可接受的,将 releaseX 合并到功能分支中也是不可接受的(它会引入不相关的功能,并且最终会使功能更难不投入生产)。
我们最终只为合并创建了一个分支,类似于 resolution/releaseX_my_beautiful_feature。
(目前,更多地遵循 githubflow 之类的模型(而不是 gitflow),持续部署并且没有真正的发布概念,对我们来说不是最好的解决方案。)
你们在使用拉取请求和发布时采用什么工作流程?
正如@ckrusek 所说,Atlasssian 有一份关于不同类型工作流程的很好的文档。关于 gitflow + 拉取请求工作流程,他们推荐的是:
- 功能分支开发
- 功能做拉请求开发
- 发布分支开发(分支命名约定:release-* 或 release/*)。发布分支仅用于准备发布,任何尚未开发的功能将推迟到下一个发布周期。
- 将发布分支合并到 master 和开发中
- maintenance/hot-fixes 分支 branch off master
- maintenance/hot-fixes 个分支合并到 master 和 develop
当然,还是没办法不在develop中混入不相关的特性到我们的特性分支中。
基本上,拉取请求工作流意味着更频繁的发布,为了处理这些,我们需要有功能标志,以便在需要时关闭生产中未经充分测试的功能。这个模型给我们带来的是一个工作流程,它确实包含了发布的概念和管理它们的方法。