Як можна ефективно використовувати git-flow для проекту, в якому підтримується більше однієї основної версії?


18

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

Зокрема, я не підтримую "безкоштовну версію" та "платну версію" чи будь-яку іншу паралельну модель, я говорю про проект, в якому версія 1 виходить, і підтримується незначними версіями (1.1, 1.2 і т.д. .), поки не буде випущена версія 3, в якій точки 2 і 3 будуть підтримуватися, поки не буде випущено 4 ... ви отримаєте ідею.

Як у вас, або ви б підтримували дві або більше підтримуваних версій проекту одночасно в робочому процесі gitflow?


Немає прикладів atm, але проекти, які я знаю, використовували окремі сховища для різних основних версій та патч-патчі з однієї в іншу.
ProdigySim

@ProdigySim: Дякую за точку даних, але це лише я чи додав би певну кількість накладних витрат для відстеження та керування?
HedgeMage

@ProdigySim Я підозрюю, що ці проекти не використовували інструмент з можливостями розгалуження та злиття git.
Рейн Генріхс

@Rein Вони використовують Mercurial. Я не думаю, що розгалуження було б дуже чистим у плані відстеження паралельних основних версій програмного забезпечення.
ProdigySim

Тоді моя підозра була правильною. І так, це досить чисто, якщо ваш інструмент підтримує його належним чином. git і ядро ​​Linux це роблять так.
Рейн Генріхс

Відповіді:


10

man gitworkflows, великий тато робочого процесу "git flow", описує загальні рекомендації щодо робочого процесу git; використання pu, next, masterі maintгілок; і як maintуправляється. Якщо у вас є кілька філій по технічному обслуговуванню, ви можете назвати їх, наприклад, maint/1.x, maint/2.xі так далі.

Ключ не в тому, як використовувати команди git, а в тому, як побудувати розумний процес. Вирішіть, які речі для вас важливі (простота резервування даних) та складіть (і документуйте) робочий процес, який задовольняє цим обмеженням.


Але чи відповідає це на питання? А саме, чи підтримує git-flow гнучку модель випуску, як описано у питанні, чи повертається до основних команд git? ("gitworkflows" описує основне використання робочого процесу git, pre-git-flow.) Git-потік був створений (нібито) для спрощення процесів злиття git / гілки, тому команди (з різним ступенем вміння git-fu) могли зосередитись на кодуванні та уникайте трудомістких помилок "злиття". Чи можливо w / git-flow підтримувати та розвивати v1.2. {1,2,3, ..} одночасно з v2.5. {1,2,3, ...}? Можливо, з / у довгострокові випуски галузей? Або master1, master2, ...?
Майкл

0

В принципі, ви б дублювати master, releaseі developгілка для кожної основної версії ви підтримуєте. Те, як вони взаємодіють між собою, залишається незмінним. Для featureгалузей, просто переконайтеся , що відділення від найстарішою гілки , яку ви збираєтеся об'єднати назад в , який запобігає тягне небажані залежності. Потім, коли ви знову об'єднаєте свою featureгілку, ви просто зробите додаткові злиття у кожну відповідну гілку більшої версії.


1
Чи не вся суть майстра включати кожну випущену версію?
HedgeMage

@HedgeMage, у більш лінійному циклі випуску це так, але це дуже непрактично для паралельних основних версій.
Карл Білефельдт

Це здається найпрактичнішим рішенням, якщо тільки є якийсь перевірений трюк із використанням виправлень або такий, про який я не знаю. Я шукав спосіб ввести git-flow і все ще зможу (як прикрою умовою) зберегти існуючу модель релізу, де нам потрібно підтримувати / розробляти старіші випуски (а не лише виправлення). Тож v5.1.x буде триматися (додаються нові функції, виправляються помилки тощо) через кілька років після виходу v6.1.x. Близько 2-3 основних версій, які підтримуються та розробляються в будь-який момент часу. Але виправлення помилок потрібно застосовувати до кожної версії, де існує помилка.
Майкл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.