Сбор вишни вызывает неожиданные конфликты - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть продукт со следующими версиями филиала: release/4.0, release/4.5 и release/5.0. Каждый из них поддерживается отдельно, и каждый из них имеет два основных компонента:

  • Сайт
  • Backoffice

Все они имеют идентичный backoffice компонент, но сильно отличается site компонент.

Во время активной разработки backoffice я стремлюсь выходить из release/5.0, вносить изменения, подбирать их до release/4.0 и release/4.5. До сих пор у меня не было проблем с этим, однако изменения были ограничены 5-6 файлами.

Недавно мы сделали капитальный ремонт backoffice - большинство файлов были изменены, некоторые из-за к стилю кода (разрывы строк / отступы) и некоторые из-за требований реализации.

Когда я пытаюсь выбрать вишню коммитов в другие ветви, я получаю странные и неожиданные конфликты. Я чувствую, что мое понимание сбора вишни неверно, но чем больше я читаю, тем больше это кажется подходящим.

Есть ли лучший способ решить эту проблему?

1 Ответ

0 голосов
/ 12 апреля 2020

Discalmer:

Это не решение, скорее обходной путь и грязный.

Прежде всего, @matt и @ al-dev совершенно прав - структура репо крайне нуждается в рефакторинге.

Поскольку мне это было нужно прямо сейчас, мне удалось перенести изменения из release/5.0 в другие ветви. Cherry-pick был не слишком полезен, так как область изменений (особенно связанных со стилем кода) продолжала портить мой контекст сравнения и, таким образом, вызывала множество конфликтов.

В качестве обходного пути я сначала сделал git diff of backend часть приложения, а затем применил его обратно:

git diff --ignore-space-change --binary release/5.0..feature -- src/Backend/ > changes.diff
git apply --allow-binary-replacement --ignore-space-change --reject --whitespace=fix changes

Грязно и не рекомендуется, и я теряю историю коммитов, но теперь это сработало. Я собираюсь реструктурировать репо, чтобы избежать привычки собирать вишню, которую я приобрел для этого проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...