Чи дійсно стратегія злиття на зразок Git Flow є анти-закономірністю?


30

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

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

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

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

Мені хотілося б знати - чому б така схема розвитку розглядалася як анти-модель? Це насправді анти-модель?


1
Розділ "Правило 3" зі старого блогу Теда Дзюби може допомогти проілюструвати, як це може бути антидіаграмою.
Іссек

5
ІМО, чим більше часу ви витрачаєте на роздуми щодо контролю версій, тим більше, що в першу чергу помилився цілий феномен користувача ->.
Ерік Реппен

@ErikReppen: Я хотів би зняти свідомість всіх людей від контролю версій і провести процес, до якого кожен може звикнути. Таким чином, нам не потрібно турбуватися про такі речі, як це анти-зразок чи ні.
Макото

6
@Makoto Все, що порушує KISS, є анти-зразком, IMO. Ось де користувачі, що живлять VCS, як правило, змушують мене з розуму.
Ерік Реппен

6
Термін "антипатерн" є на зразок "найкращої практики", оскільки він часто слугує приводом для того, щоб люди відключили мізки. Не приймайте це поняття, якщо ведучий не може чітко сказати, який досвід він має з цим і чому це погано.
Kyralessa

Відповіді:


30

Він здебільшого має на увазі особливості гілки моделі. Функціональні гілки були оголошені анти-зразком дуже давно, коли гілки тривали місяцями, і системи контролю версій не змогли об'єднатися, щоб врятувати своє життя. У гілок функцій, які тривають тиждень-два, виникає набагато менше проблем, особливо якщо протягом цього часу ви постійно з’єднуєтесь із develop галуззю функцій. Що-небудь набагато довше, ніж це, все ж не рекомендується.

Навіть якщо ви не використовуєте функціональну сторону гілки потоку git, інші частини корисні для забезпечення чистого злиття, а ваші зміни поширюються в правильному напрямку.


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

6
Мій досвід полягає в тому, що у вас можуть лежати місцеві речі довгий час, доки ви зробите їх об'єднаними з останнім майстром та або розвинете, як це доречно.
Ян Худек

2
@JaHudec ... або поки у вас не лежать дві речі, які певним чином конфліктують. Ви завжди повинні мати огляд того, що робиться ...
johannes

5
Дещо читаючи це, і посилання Мартіна Фаулера, схоже, вказує на те, що гілки функцій, які виконуються в потоці безперервної інтеграції, можуть спрацювати - якщо вони виконуються в менших розмірах, ніж те, що більшість людей вважає за необхідне робити. Тож у певному сенсі ви маєте рацію - менше двох тижнів, як час перебування на функціональній галузі, здається підходящим. Я не бачу, однак, наскільки особливості гілок є антитілом.
Макото

3
Ти правий. Вони є лише антизразком, коли вони живуть занадто довго, не злившись. Іноді люди все-таки виступають проти ідеї, коли не пам’ятають причин, що лежать в основі.
Карл Білефельдт

21

Злиття - це смішна річ - чим рідше це робиться тим важче, тим важче, чим більше людей будуть боятися цього, тим рідше вони будуть це робити.

Рішення - або не дозволяти гілкам занадто сильно відхилятися, або не використовувати гілки.

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


1
Ні, не використовуючи гілки, це нестандарт. Іншим основним питанням буде те, що роботу можна проводити в двох різних місцях одного і того ж коду, тому, сподіваємось, ми можемо зробити щось і для полегшення цього.
Макото

12
@makoto, досить часто роз'єднання речей у коді робить конфлікти рідше. Це може бути як звичайне розділення функціоналу на функції / класи, так і більш високий рівень уникнення недокументованих припущень між модулями. Потім зміни стають більш локалізованими.
maxim1000

1
@ maxim1000 Я згоден Я думаю, колись хтось сказав щось на кшталт "VCS - це альтернатива бідній людині модульній [розв'язаній] архітектурі"
8DH

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