Слідом за git-flow, як слід обробляти виправлення попереднього випуску?


101

Якщо ви намагаєтеся дотримуватися моделі розгалуження git-flow, задокументованої тут, та інструментами тут , як вам впоратися з цією ситуацією:

Ви зробили версію 1.0 та 2.0. Тоді вам потрібно зробити виправлення для 1,0. Ви створюєте гілку виправлень з тега 1.0 та впроваджуєте там виправлення. Але що тоді?

Зазвичай ви об'єднаєтеся в master та покладете туди тег випуску 1.1. Але ви не можете об'єднати 1.1 до точки після 2.0 на майстер.

Я думаю, ви могли б поставити тег випуску на гілку виправлення, але це створило б постійну гілку поруч з майстром, яка містила б тег випуску. Це правильний шлях?


можливий дублікат Git-flow та master з декількома гілками паралельного випуску [хоча інше питання новітнє, воно має більше корисних відповідей, тому я позначив це питання як дублікат]
danio

Відповіді:


74

Здається, що в git потоці існує концепція гілки "підтримки". Це використовується для додавання виправлення до попереднього випуску.

У цій темі є додаткова інформація з такими прикладами:

git checkout 6.0
git checkout -b support/6.x
git checkout -b hotfix/6.0.1

... виправте, тоді:

git checkout support/6.x
git merge hotfix/6.0.1
git branch -d hotfix/6.0.1
git tag 6.0.1

або за допомогою git flowкоманд

git flow support start 6.x 6.0
git flow hotfix start 6.0.1 support/6.x

... внесіть зміни тоді:

git flow hotfix finish 6.0.1

- зберегти ці гілки підтримки або видалити їх через деякий період
Еван Ху

@EvanHu добре, точно тримайте їх до тих пір, поки у вас є десь ця галузь у виробництві. Після цього це питання історичного запису. Можливо, ви хочете знати, як виправлені виправлення, якщо вони коли-небудь повторюватимуться.
Клас Мелбурн

Слід зробити реліз на гарячому виправлення, правда? Як ми можемо це зробити?
Равіндранат Акіла

33

Цікаве запитання! Потік, який ви пов’язали, передбачає, що майстер може відстежувати виробництво. Це працює лише в тому випадку, якщо виробничі версії суворо збільшуються. Зазвичай це стосується веб-сайту, який має лише одну виробничу версію.

Якщо вам доведеться підтримувати кілька виробничих версій, однієї гілки для відстеження виробництва недостатньо. Рішення - не використовувати головного для відстеження виробництва. Замість цього використовуйте філії подобається release1, release2і т.д.

При такому підході вам може не потрібна гілка виправлення. Ви можете вирішити проблему на release1гілці. Коли виправлення досить добре, створіть release1.1тег на release1гілці.


Ви можете змінити git-flow на встановлення тегів випуску на гілках випуску. Це досить велика зміна. Це порушить поточні сценарії. Крім того, що б тоді містив господар?
Клас Меллбурн

3
git-flowІнструмент не підходить , якщо ви повинні підтримувати кілька версій виробництва. У робочому процесі, запропонованому у цій відповіді, майстер взагалі не використовується. Ви можете назвати майстра галузі розвитку, зрештою, це лише ім'я.
Андомар

GitFlow підтримує відстеження декількох версій produciton
Andre L

7

git-flow передбачає, що ви підтримуєте лише одну лінію випуску одночасно, зручно відстежуватися майстром. Якщо ви підтримуєте більше 1, вам потрібно буде змінити процес git-потоку, щоб було кілька трекерів ваших окремих випусків, які ви підтримуєте (master-1, master-2). Ви можете продовжувати використовувати master для відстеження останньої лінії випуску, на додаток до або замість конкретного трекера для останнього рядка випуску (master umjesto master-2).

На жаль, будь-яке інструментальне забезпечення git-потоку, яке ви використовуєте, можливо, потрібно буде змінити, але, сподіваємось, ви досить добре знайомі з процесом git-flow, щоб обробляти цей конкретний випадок безпосередньо командами git.


Якщо ви модифікуєте git flowпроцес, то це буде щось інше. Якщо якусь модель слід виправити (а не просто розширити), вона настільки ж успішна, як заявляє її автор. Будь ласка, ознайомтеся з моєю відповіддю на тему, яку ми обговорюємо.
Віктор Ярема

0

git config --add gitflow.multi-hotfix true Ця команда, здається, працює для мене!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.