分支合并提前检测冲突

2019-05-01  本文已影响0人  邬思道

多人开发场景中,经常会出现分支合并冲突的现象,同时解决起来也很麻烦.

因为涉及多人修改同一处代码,有可能这段代码修改,已经过去很久了,很难知道应该保留哪一方的修改。

严重影响了开发效率,为此需要提前发现冲突,提前修复

为什么要提前检测,能带来什么好处?

1. 早发现,早整治,能100%无冲突合入,提高合入率,减少返工率

2. 能发现哪些文件哪些函数经常出现冲突,对这些文件及函数进行统一整改

怎么检测?检测的原理是什么?

场景举例:

    1. 个人分支:personal

    2. 项目主干分支:master

    3. 开发人员在个人分支上进行特性开发,期间可能会往远端库推送多次,最终会合入到主干分支

检测时机

1. 分支推送到远端库后,自动触发自动化构建检测

    * 缺点:频繁检测,浪费资源,可能要修复冲突多次

2. 分支需要合入主干时,如创建Merge/Pull Request后,发起检测

    * 优点:在需要时检测,如有冲突,只需修复一次

怎么检测

通过三路合并检测:

  1. 通过`git merge-base personal master`找出共同的节点,称之为:base_sha

  2. 通过`git merge-tree base_sha personal master`获取合并后的结果

  3. 如果输出有`changed in both`字样,那说明存在冲突

总结

1. 定期拉取主干分支,更新到个人分支,保持与主干分支差异最想

2. 开发完成后,尽快合入 

3. 根据冲突提前检测,统计出频繁冲突文件列表,能够提前预警

上一篇 下一篇

猜你喜欢

热点阅读