Git功能分支依赖项

时间:2017-08-22 07:51:32

标签: git dependencies

我在互联网上查看了几种可能的解决方案,但我仍然无法理解它,它对我的​​情况有何帮助。 我们有一个git-flow的变种:master分支,dev分支,每个新特性都是在dev的一个单独的分支中创建的。问题是,处理一个功能的两个开发人员依赖于彼此的代码。

假设这是一个微控制器的项目。一个开发人员编写系统部分,管理内存。第二个开发人员编写UI并且不接触系统函数的编写。假设每个人都应该有自己的功能分支是最合乎逻辑的。

但是,两个分支都是相互依赖的。要开发功能,UI开发人员需要调用第一个开发人员创建的功能。要开发这些功能,第一个开发人员需要在生成的UI上测试它们。此外,开发人员必须不断就应该创建哪些功能以及应该具有哪些签名达成一致 - 第二个开发人员几乎立即需要由一个开发人员进行更改,因为他们密切配对工作。

另一个例子 - web-dev,后端开发人员和前端开发人员彼此依赖变化。

如何解决这种情况?

1 个答案:

答案 0 :(得分:2)

整合分支?

我认为可能的解决方案是创建一个更新会更频繁的集成分支。如果出现问题,任何人都可以在他们的开发分支中修改它,并将其修改/分配给集成分支。

它们有时也被称为“一次性分支”。

示例

想象一下在dev分支上有最后一次提交的干净存储库 - D

用户F(前端)在提交frontend-dev上创建自己的分支D。 用户B(后端)也是同一提交中的分支backend-dev

每个用户在各自的分支中开发自己的部分,因为它们是私有分支,所以允许一切,包括强制推送。没有其他人应该承诺他们的分支。

过了一段时间,分支可能看起来像这样:

D - F1 - F2 - F3 - F4 <frontend-dev)
 \
  \ B1 - B2 - B3 <backend-dev)

一旦用户F或B需要测试他们的工作如何相互集成,他们就会从commit integration创建一个新的分支D并累积来自两个相应分支的所有提交:

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)