我正在与一家供应商合作,他们提供了一个补丁集来支持在他们的平台上运行Android。这意味着他们基于特定的Linux版本进行补丁,并且在他们的补丁中包含了一些Android补丁(我认为是挑选的),这些补丁被应用于相同的Linux版本。
因此,当与我们的更改一起导入到git中时,历史记录看起来像这样:
v2.6.x.y v_rel_x.y o_rel_z
l--l--l---------v--v--a--v--a--a--v--v--v--------o--o--o
这里的l
代表Linux提交,v
代表供应商提交,a
代表Android提交,o
代表我们的提交。
让事情变得复杂的是,基于相同Linux内核版本的Android git内核源代码是完全独立的,看起来像这样:
v2.6.x.y v2.6.x.y+1
l--l--l---------l---l
\ \ android-2.6.x
\ a--a--a--a--a
\
\ v_rel_x.y o_rel_z
v--v--a--v--a--a--v--v--v--------o--o--o
现在,我想把所有的Android补丁都包含在Android-2.6.x版本中,但我也希望所有供应商的补丁都能支持他们的平台。不幸的是,在v_rel_x.y分支中,许多v2.6.x.y+1..android-2.6.x变更集中的变更已经应用了。因此,从Android-2.6.x到o_rel_z的简单合并会创建大量冲突,这些冲突无法通过手动解决。
您有任何关于可靠地执行从Android-2.6.x合并到o_rel_z的想法吗?
是的,每个分支上都有大量提交,并且v_rel_x.y上的Android补丁完全与供应商补丁缠绕在一起。