GIT робочий процес для веб-розробки


12

Давно невелика команда веб-розробників, з якими я працюю, почала використовувати git для веб-розробки. Тоді ми просто зобов’язалися безпосередньо влаштовувати або освоювати, а потім часто зливатися між ними. Це було краще, ніж нічого, але це теж був безлад.

Не так давно ми прийняли робочий потік gitflow. Хоча це, безумовно, краще, ніж хаос, який настав перед цим, здається дещо громіздким і надмірно орієнтованим / орієнтованим на віху. Мої побратими часто просять мене уточнити, як це має працювати, а що має зливатися, а що не слід. Взагалі, це здається погано придатним для роботи над веб-розробкою, де ми часто розгортаємо код і не відстежуємо конкретні основні етапи для випуску.

За останніми пропозиціями друзів я почав дивитися на GitHub Flow . Читання публікації Скотта Чейкона тут ідеально відповідає цьому:

Отже, чому ми не використовуємо git-flow на GitHub? Ну, головне питання - ми постійно розгортаємось. Процес git-flow розроблений значною мірою навколо "випуску". У нас насправді немає «випусків», тому що ми розгортаємось у виробництві щодня - часто кілька разів на день.

FWIW, я також ознайомився з цим приємним набором робочих процесів на сайті Atlassian: https://www.atlassian.com/git/workflows#!workflow-feature-branch

Однак вони ВСІ схожі на поганий вибір веб-розробки в невеликій команді і знову орієнтовані на основні випуски додатків, а не часті / щоденні випуски.

Це питання над SE просити порівняти git-flow з github-flow /programming/18188492/what-are-the-pros-and-cons-of-git-flow-vs-github -потік

Це взагалі гарна відповідь, але як я вже згадував у своєму коментарі нижче meta.programmers.SE, схоже, вказує на те, що питання щодо загальних найкращих практик робочого процесу належать тут, і я сподівався на ширший список можливих відповідей, ніж просто git-flow та github -flow, будучи специфічним для веб-розробки. Тому я думаю, що це вимагає нового питання тут.

Зважаючи на це, що ви вважаєте найкращим / бажаним робочим процесом на основі git для невеликої команди з веб-розробників, яка працює над проектами з досить постійним розгортанням? Це github-flow чи щось інше?


BTW, я ставлю це питання тут на Programmers.SE виходячи з цього: meta.programmers.stackexchange.com/posts/6312/reitions
jb510

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

@gnat Я не впевнений, що ще я міг би поділитися з цього приводу? настільки орієнтований на випуск gitflow є громіздким. GitHub-Flow вважає, що це добре для щоденного розгортання, але наявність десятків гілок, які чекають об’єднання, також виглядає хаосом. Сподівався, що хтось відповість "X чудово підходить для веб-розробників, оскільки так". Це добре висвітлено у посиланні, яке я надав, я думаю, я міг би витягти цитати з нього?
jb510

1
@gnat - я повністю переписав питання, щоб показати більше досліджень і бути дуже конкретним щодо відповіді, яку я шукаю.
jb510

Відповіді:


7

По-перше, я хотів би зробити короткий підсумок різних робочих процесів, які ви розглянули, і, на вашу думку, не підходять для того, на який розвиток ви працюєте:

  • Централізоване ( Джерело ): майже схоже на робочий процес SVN, але зараз у розподіленому середовищі. Кожен розробник працює над особистою копією masterта надсилає зміни origin/masterбезпосередньо або за допомогою запиту на виклик.

  • Особливість галузі ( Джерело ): Ну, що. Кожен розробник, який працює над певною функцією, повинен працювати над певною галуззю, присвяченою лише цій функції. Ця гілка функцій повинна бути створена masterз іншої гілки або з неї. Врешті-решт все зливається назад master.

  • Gitflow ( Джерело ): дві основні гілки відстежують історію проекту developта master. Ще 3 гілки називається hotfix, releaseі featureзміни володіння зроблені безпосередньо masterдля фіксації важливих виробничих помилок, номери зміни версії та інших деталей до відпустки або роботу по конкретній функції так само , як це відгалуження , відповідно.

  • Потік GitHub ( Джерело ): Розробники створюють featureвідгалуження master. Зміни висуваються через запит на тягу. Зміни, прийняті до того, master щоб їх негайно розгорнув бот GitHub Hubot.

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

Я також думаю, що вам слід зосередитись на покращенні останніх. Як складається ваш трубопровід розгортання ? У " Постійній доставці: Надійне випуск програмного забезпечення за допомогою автоматизації побудови, тестування та розгортання " автори визначають можливі причини нечастого розгортання, деякі з яких:

  • Процес розгортання не автоматизований.
  • Тестування займає тривалий час.
  • Люди не розуміють процес збирання / тестування / розгортання.
  • Розробники не піддаються дисциплінованості щодо збереження роботи програми, вносячи невеликі, поступові зміни, і так часто порушують існуючу функціональність

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


2
+1, ключем до cd є не git чи ваш gitflow, а CI та робочий процес доставки.
Wyatt Barnett

Думаючи про це багато. Дякуємо за розуміння. FWIW, я спеціально уникаю використання терміна CI, оскільки ми не використовуємо CI. Можливо, нам слід, але ми цього не робимо, це просто занадто громіздко для десятків проектів, над якими ми працюємо за певний тиждень, якийсь короткий термін, якийсь довгостроковий.
jb510

2
@ jb510 - у нас є аналогічна установка проекту, я б не мріяв пролетіти без CI. Перемикання контекстів набагато простіше, коли всі німі, але крихкі частини написані.
Wyatt Barnett

1
Іноді неможливість легко впровадити CI - це ознака того, скільки потрібно CI для проекту. Немає одиничних тестів? Розгортання всього посібника? Чимало крокуючих кроків? Обстеження потреб.
Kzqai

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