Я думаю, що ця стаття, «Успішна модель розгалуження Git» , дуже відома серед досвідчених користувачів DVCS.
Я використовую hg
здебільшого, але я можу стверджувати, що це обговорення добре для будь-яких DVCS.
Нашим поточним робочим процесом є кожен розробник, який клонує головний репо. Ми пишемо код на власному місцевому репо, запускаємо тести, і якщо все йде добре, підштовхується до майстра.
Таким чином, ми хочемо налаштувати такі сервери CI, як Jenkins, та покращити наш робочий процес із майбутніми системами забезпечення (шеф-кухар, маріонетка, відповідальний тощо).
Справжня частина
Ну, модель, представлена вище, працює добре, але гілки можуть зламати CI. Гілка функції повинна синхронізуватися з початком (відповідно до статті, це було б development
гілкою), щоб зробити CI та злиття гладкими, правда?
Скажімо, Аліса та Боб працюють над двома функціями. Але Аліса робиться на наступний день. Особливість Боба займає тиждень. На момент закінчення роботи Боб його зміни застаріли (можливо, Аліса переробила / перейменувала деякі класи).
Одне рішення - щоранку розробники повинні витягнути, master/origin
щоб перевірити, чи є якісь зміни. Якщо Аліса погодилася, Боб повинен витягнути і об'єднатися у свою робочу область, щоб його галузь функцій була актуальною.
- Це хороший спосіб?
- Чи повинні ці гілки існувати в master repo (чи не локальний клон?). Що означає, чи повинен кожен розробник взяти на себе привілей на головне репо на GitHub / Bitbucket, щоб вони могли створити нову гілку? Або це робиться на місцях?
- Нарешті, модель, представлена статтею, повинна порушити CI, якщо гілки не синхронізуються з
origin/master
. Оскільки ми хочемо робити нічні побудови, чи повинні розробники витягувати та об’єднуватись, перш ніж вони залишають роботу, і чи працює також ІС на кожній гілці функцій?