Я работаю с поставщиком, который предоставляет набор патчей для ядра Linux, чтобы поддерживать Android поверх своей платформы. Это означает, что они основывают свою строку патчей на определенной версии Linux, а в их строку патчей включены некоторые из патчей для Android (предположительно, выбранным cherry), которые применяются к той же версии 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
- наши коммиты.
Что делает это сложным, так это то, что исходный код ядра Android Git, основанный на той же версии ядра Linux, совершенно отдельный, выглядит так:
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, однако я также хочу, чтобы все исправления вендоров поддерживали их платформу. К сожалению, довольно много изменений в наборе изменений v2.6.x.y+1..android-2.6.x
уже применены к ветви v_rel_x.y
. Таким образом, простое слияние с android-2.6.x на o_rel_z создает огромное количество конфликтов, которые просто невозможно решить вручную.
Есть ли у вас какие-либо идеи о том, как надежно выполнить слияние с android-2.6.x на o_rel_z?
И да, в каждой ветви действительно огромное количество коммитов, и патчи для Android на v_rel_x.y полностью запутаны патчами вендоров.