Використовуючи Git, чи доцільно використовувати головну гілку для активного розвитку?


32

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

  1. Під сильним впливом стаття nvie.com про успішне розгалуження з основною гілкою, що представляє найстабільніший код, галузь розробки для кровотокового крайового коду та інтеграційну гілку для коду, яка готова до тестування на якість.

  2. Альтернативна модель, в якій головна гілка представляє код розробки крайового краю, інтеграційна гілка для коду, готова до тестування якості, та виробнича гілка стабільного коду, готова до розгортання.

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


1
Мені подобається worfklow, який Скотт Чейкон використовує для розробки GitHub: scottchacon.com/2011/08/31/github-flow.html
user16764

1
Як описано, мені здається, це скоріше семантична проблема, ніж ні - будь-яка організація буде розвивати свої власні процеси, і деякі аспекти назви повинні відображати ваш робочий процес. Загалом, загальним є те, що десь ви визначаєте щось таке, що "вихідний код HEAD завжди відображає стан, готовий до виробництва". Те, що ви вирішили назвати, є менш важливим, але і git-flow, і робочий процес GitHub зосереджуються на цьому розділенні та на контролі, коли ви підштовхуєте до готової до виробництва "штучки"
Мерф

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

Тоді ви відповіли на власне запитання (-: Чесно кажучи, навіть ставлячи питання, яке ви переважаєте криву ...
Мерф

Відповіді:


33

Єдиною реальною визначальною особливістю masterгалузі є те, що вона є типовою для деяких операцій. Також назви гілок мають значення лише в певному сховищі. Моя, наприклад, masterможе вказати на вашу development. Крім того, masterгілка навіть не потрібна, тому, якщо є якась плутанина щодо того, якою вона повинна бути, моя порада, як правило, взагалі залишати її.

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


7
+1. А оскільки код "готовий до виробництва" є важливим кодом, він також повинен жити у відділенні, назва якого підкреслює це значення. "master", оскільки ім'я гілки за замовчуванням, безумовно, не відповідає цьому запиту, оскільки воно також використовується у будь-якому іншому сховищі для будь-яких намірів.
Bananeweizen

4
+1. Це відповідь у реальному житті. Наголосимо на тому, що ніхто з вашої команди не визначав гілку "master", система git. Для чогось важливого дотримуйтесь гілок, які визначив хтось із вашої команди.
Тревіс Вілсон

1
Повністю згоден. Хоча мені дуже подобається модель git flow ( nvie.com/posts/a-successful-git-branching-model ), єдине, що мене турбує, - це те, що майстер суворо зарезервований до випусків, що є контрінтуїтивним.
Бачі

12

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

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


3
Чи не краще робити відстеження версій за допомогою тегів?
Адоніс К. Какулідіс

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