[英]Git feature branches dependencies
我查看了Internet上的几种可能的解决方案,但仍然无法理解它如何对我的情况有所帮助。 我们有一个git-flow的变体:master分支,dev分支,每个新功能都是在dev的单独分支中创建的。 问题在于,从事一项功能的两名开发人员依赖于彼此的代码。
假设这是一个针对微控制器的项目。 一位开发人员编写系统部分,管理内存。 第二个开发人员编写UI,并且不涉及系统功能的编写。 假设每个人都应该有自己的功能分支是最合乎逻辑的。
但是,两个分支相互交叉依赖。 要开发功能,UI开发人员需要调用第一个开发人员创建的功能。 要开发功能,第一个开发人员需要在结果UI上对其进行测试。 此外,开发人员必须始终就应该创建哪些功能以及应该具有哪些签名达成一致-由于一个紧密的配对工作,第二个开发人员几乎立即需要一位开发人员进行更改。
另一个示例-后端开发人员和前端开发人员相互依赖的web-dev。
如何解决这种情况?
整合分支?
我想一种可能的解决方案是创建一个集成分支,使更新相遇的频率更高。 如果出现问题,任何人都可以在其开发分支中对其进行修复,然后将base / cherrypick重置为集成分支。
它们有时也称为“一次性分支”。
例
想象一下一个干净的存储库,最后一次提交在dev
分支D
。
用户F(前端)在提交D
上创建自己的分支frontend-dev
。 用户B(后端)在同一提交时也分支backend-dev
。
每个用户都在各自的分支机构中开发自己的零件,并且由于它们是私有分支机构,因此可以进行所有操作,包括强行推动。 而且没有其他人应该致力于其分支机构。
一段时间后,分支可能如下所示:
D - F1 - F2 - F3 - F4 <frontend-dev)
\
\ B1 - B2 - B3 <backend-dev)
一旦用户F或B需要测试他们的工作如何相互集成,他们就会从提交D
创建一个新的分支integration
,并在其顶部累积来自两个相应分支的所有提交:
D - F1 - F2 - F3 - F4 <frontend-dev)
|\
| \ B1 - B2 - B3 <backend-dev)
\
\ F1 - F2 - F3 - F4 - B1 - B2 - B3 <integration)
如果支持的开发人员发现错误,则可以创建一个修复程序,将其提交为在集成分支上的修复程序提交(使用git commit --fixup
)并测试:
D - F1 - F2 - F3 - F4 <frontend-dev)
|\
| \ B1 - B2 - B3 <backend-dev)
\
\ F1 - F2 - F3 - F4 - B1 - B2 - B3 - B2Fixup <integration)
一旦开发人员感到满意,他/她就可以将所有工作分拣到其开发部门:
D - F1 - F2 - F3 - F4 <frontend-dev)
|\
| \ B1 - B2 - B3 - B2Fixup <backend-dev)
\
\ F1 - F2 - F3 - F4 - B1 - B2 - B3 - B2Fixup <integration)
并可能删除integration
分支。 要清理存储库,可以使用git rebase --interactive --autosquash dev
来实现:
D - F1 - F2 - F3 - F4 <frontend-dev)
\
\ B1 - B2(withFixup) - B3 <backend-dev)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.