Я пытаюсь выбрать рабочий процесс Git, наиболее подходящий для нашего продукта. Вот параметры:
- Мы выпускаем несколько крупных релизов в год, скажем, 10 максимум
- У нас одновременно работает несколько версий нашего продукта (некоторые люди на v10.1, некоторые на v11.2 и т. Д.)
- Нам нужно иметь возможность работать над несколькими выпусками одновременно (чтобы мы могли работать над версией 12.1, но когда мы подойдем к концу релиза, мы начнем работать над версией 12.2 одновременно)
- Мы должны иметь возможность исправлять выпуски при обнаружении критических ошибок
Пока что я думаю, что это может сработать:
- Один удаленный репо используется
- Создать ветку 12.1 от мастера
- Создайте ветки объектов на основе 12.1, зафиксируйте их и объедините в 12.1, нажмите
- Как только нам нужно начать работу над будущим выпуском, создайте новую ветку 12.2 на основе 12.1
- С этого момента, при работе над функцией для 12.1, создайте ветку из 12.1, зафиксируйте изменения и объединитесь в 12.1 и 12.2, нажмите
- Если вы работаете над функцией для 12.2, создайте ветку из 12.2, зафиксируйте изменения и объединитесь только в 12.2, нажмите
- Когда выпуск 12.1 будет завершен, объедините его с главной веткой master и tag с 12.1
- Если требуется исправление, создайте ветку исправления из самой старой ветки выпуска, которая нуждается в нем, внесите изменения и объедините все ветки выпуска для этого выпуска и будущих выпусков, которые могут быть затронуты; если была затронута последняя ветка стабильного выпуска, объедините ее с master.
У меня есть несколько проблем:
- Я не уверен, что объединение исправлений из старых веток в новые будет гладким процессом, особенно если было много пересекающихся изменений; Было бы разумнее просто исправлять вручную в каждой ветви в тех случаях, когда это выглядит как конфликты
- Модели рабочих процессов, которые я видел, по-видимому, не поддерживают живую ветвь релиза, после того как релиз слит в мастер, помечен и удален. Моя проблема в том, что у меня нет хорошей идеи, как управлять состоянием релиза, если все, что у меня есть, это теги в master, кажется, что легче исправить в ветке, а затем у меня есть релиз, к которому я всегда могу вернуться это последнее исправление (я могу даже пометить исправления в выпуске). Не уверен, что есть способ вернуться в мастер и каким-то образом получить копию выпуска с примененными исправлениями и обновить этот тег.
Будем благодарны за комментарии о вещах, которые я, возможно, упустил из виду, или о лучших способах выполнения задач с учетом указанных мной требований.