Я намагаюся вибрати робочий процес Git, який найбільше відповідає нашому продукту. Ось параметри:
- Ми робимо кілька великих релізів на рік, скажімо, щонайбільше 10
- У нас є декілька версій нашого продукту, які одночасно активні (деякі люди перебувають на версії 1010, інші на версії v11.2 тощо)
- Нам потрібно мати можливість працювати над кількома випусками одночасно (щоб ми могли працювати над v12.1, але, як дістатися до кінця випуску, ми почнемо працювати над v12.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 завершений, об'єднайте його у головну та теги головного відділення з 12.1
- Якщо потрібне виправлення, створіть гілку виправлень із найдавнішої гілки випуску, яка потребує її, введіть зміни та об'єднайтесь назад у всі гілки випуску для цього випуску та майбутніх випусків, на які можна вплинути; якщо була постраждала остання гілка стабільного випуску, об'єднайте її в головний.
У мене є кілька проблем:
- Я не впевнений, що об'єднання виправлень із старих гілок у нові гілки буде плавним процесом, особливо якщо відбулося багато змін, що перетинаються; чи було б розумніше виправити виправлення вручну в кожній гілці у випадках, коли, схоже, виникнуть конфлікти
- Моделі робочого процесу, які я бачив, схоже, не сильно підтримують гілки випуску, коли виконаний випуск об'єднується в головний, помічений та видалений. Моя проблема з цим полягає в тому, що я не маю уявлення, як керувати станом випуску, якщо все, що у мене є, є тегами в master, здається, що виправлення у гілці простіше, і тоді у мене є реліз, на який я завжди можу повернутися що має останню виправлення (я можу навіть тегу виправлення у випуску). Не впевнений, що я можу повернутись до master і якось отримати копію випуску із застосованими виправленнями та оновити цей тег.
Цінуються коментарі щодо речей, які я, можливо, не помічав, або кращих способів їх виконання, враховуючи вимоги, які я вказав.