Слияние веток, зависящих от удаленного файла

Рассмотрим следующий сценарий приложения, имеющего несколько версий:

  1. В ветке master есть код, общий для всех версий ПО.
  2. На основе master создается foo_branch, который добавляет новый код это зависит от кода от master.
  3. На основе master создается bar_branch, который добавляет новый код, но ему не нужен исходный код от мастера, поэтому удаляет его.
  4. Две версии программного обеспечения должны объединиться в новую ветку. Поэтому я просто создаю new_branch на основе foo_branch, а затем вливаю в него bar_branch.

Репо:

*   51f1ddb (HEAD -> new_branch) Merge branch 'bar_branch' into new_branch
|\
| * c68a5b3 (bar_branch) add code to bar branch
| * f550e6d delete common code
* | 0ec00c9 (foo_branch) add code to foo branch
|/
* d8d13c7 (master) add common code

Проблема в том, что теперь исходный код из мастера удален, но код из foo_branch зависит от него.

Как мне решить эту проблему? Какие есть варианты? Я думал, что было бы очень полезно, если бы слияние создавало конфликт всякий раз, когда что-то удалялось. Это возможно?

Есть ли у bar_branch отдельные коммиты для удаления (й)? Если это так, я думаю, вы можете использовать сбор вишен, чтобы объединить ветки так, как вы хотите.

Chris Lear 10.08.2018 15:59

«… Было бы очень полезно, если бы слияние создавало конфликт всякий раз, когда что-то удаляется» - для этого может работать один из встроенных в Git стратегии слияния, или вы можете реализовать собственный драйвер слияния, который выходит с ненулевым статусом выхода, когда видит эти файлы были удалены.

Rory O'Kane 13.08.2018 23:16
0
2
19
0

Другие вопросы по теме