Что такое хорошая настройка для работы с различными ветками фьючерсов и их автоматическая синхронизация? - PullRequest
1 голос
/ 17 апреля 2020

Проект становится больше, и у нас есть несколько веток интеграции:

  • master -> выпущенный код
  • develop -> код, который будет выпущен очень скоро
  • develop-8_6 -> код, который будет выпущен в какой-то момент как версия 8.6
  • develop-8_7 -> код, который будет выпущен в какой-то момент как версия 8.7
  • develop-8_8 -> код, который будет выпущен в какой-то момент как версия 8.8
  • develop-8_9 -> код, который будет выпущен в какой-то момент как версия 8.9
  • develop-8_10 -> код, который будет выпущен в какой-то момент как версия 8.10
  • и т. д. ...

Как ветви интеграции, каждая ветвь должна содержать все изменения из предыдущих ветвей. Кроме того, каждая ветвь получает запрос от разработчиков (например, dev/8_7featureX). Каждая ветвь объекта должна быть рассмотрена, и для ее объединения обычно используется просто кнопка в gitlab / github. Здесь нет проблем. Моя проблема в том, чтобы объединить одну ветку интеграции с другой develop -> develop-8_6 -> develop-8_7 -> ...

До сих пор я объединял все ветви вручную, иногда это легко, иногда это требует времени из-за конфликтов и т. д. Но это бесконечно, я думаю, что наличие нескольких веток интеграции является обычным подходом для больших проектов, таких как Gitlab , et c.

Вопрос:

Как можно автоматически выполнить процесс объединения веток интеграции для всех будущих ветвей выпуска? Я читал о реализации git приемных хуков на сервере, но было неясно, как бороться с конфликтами. Может ли кто-нибудь указать мне правильное направление? Или показать какие-то конкретные c примеры или подходы для объединения всех разрабатываемых веток?

Другими словами, как люди в проекте Gitlab имеют дело с таким количеством интеграционных веток? Как они это автоматизировали? (Или это делается вручную?)

1 Ответ

1 голос
/ 17 апреля 2020

Во-первых, убедитесь, что, если вы решите этот конфликт, попытайтесь активировать git rerere (" re используйте re проводной re solution ").

git config --global rerere.enabled true

Это запишет для вас разрешение этих конфликтов.

См. Больше в разделе" Исправьте конфликты только один раз с помощью git rerere"из Кристоф Портенев

Если вы предпочитаете автоматически перебирать разрешенные файлы (я делаю), вы можете попросить его: вам просто нужно настроить свой конфигурация примерно такая:

git config --global rerere.autoupdate true

Во-вторых, лучше всего работать с функциональными ветвями (настолько независимыми друг от друга, насколько это возможно), а затем объединять в одну интеграционных ветвей ( dev ответвление)
Вы можете увидеть пример в gitworkflow (одно слово)

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