Develop Branch — ово је главна интеграциона грана у Git Flow-у у коју се спајају све завршене feature гране пре припреме издања. За разлику од main-а, develop садржи најновије, али још увек необјављене промене — овде се одвија дневна интеграција кода од свих програмера у тиму. Према подацима Atlassian, 2024, develop је обавезна грана у Git Flow-у и обезбеђује стабилно интеграционо окружење за тим.
Главне ствари
Develop Branch (развојна грана) — дуготрајна грана у Git Flow-у која служи као централни чвор за интеграцију кода од свих програмера. У њу се спајају feature гране након завршетка развоја и проласка кроз code review.
Код у develop-у се увек налази у стању спремном за креирање издања, иако још увек није објављен у продукцији. То значи да су све функције у develop-у прошле ревизију, тестирање и интеграционе провере, али још увек чекају свој циклус издања.
За разлику од main-а, где је свака верзија кода издање, develop садржи непрекидни ток промена. Комитови у develop-у се појављују како се спајају feature гране, што се може дешавати неколико пута дневно.
Према подацима Vincent Driessen, 2010, develop је кључни елемент успешног модела гранања, јер одваја рад у току од верзија спремних за објављивање.
Разумевање разлика између develop и main је критично важно за правилан рад у Git Flow-у. Ове гране обављају различите функције и имају различите захтеве за стабилношћу.
| Карактеристика | Develop | Main / Master |
|---|---|---|
| Намена | Интеграција нових функција | Стабилан код издања |
| Стабилност | Висока (након тестова) | Максимална (продукција) |
| Учесталост комитова | Свакодневно (спајање feature) | По издањима (сваких 1-4 недеље) |
| Извор грана | Од ње се креирају feature | Од ње се креирају hotfix |
| Спајање | Из feature-а кроз PR | Из release-а кроз merge |
Подела на develop и main омогућава тиму да непрекидно интегрише нови код без ризика за стабилност продукционе верзије. Програмери могу да виде свој код у develop-у одмах након одобрења PR-а, чак и пре званичног издања.
У моделу Git Flow, develop заузима централно место између feature грана (извор промена) и release грана (припрема за објављивање). Разумевање ове хијерархије је основа ефикасног гранања.
Оваква структура гарантује да develop увек садржи најновију верзију кода са свим новим функцијама, а main — само проверен продукциони код. Ово је посебно важно за мобилне пројекте са дугим циклусом ревизије у App Store-у и Google Play-у.
Develop представља централну карику између feature, release и hotfix грана. Разумевање праваца спајања је основа за спречавање конфликата и губитка комитова.
Квалитет кода у develop-у мора бити висок, али не апсолутан. За разлику од main-а, где свака грешка значи хитну исправку, develop дозвољава мање недостатке који ће бити исправљени пре издања.
Минимални захтеви за код пре спајања у develop:
Аутоматске провере у CI/CD пајплајну морају да се покрећу на сваки push у develop. Ако се компилација поквари, одговорни програмер мора да поправи проблем у року од сат времена или да врати свој комит.
Подешавање GitHub Actions за develop гарантује да сваки PR пре спајања пролази аутоматску проверу. Типичан пајплајн укључује компилацију, тестове и линтинг.
# GitHub Actions — провера develop-а након спајања
name: Develop CI
on:
pull_request:
branches: [develop]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Unit tests
run: ./gradlew testDebug
- name: Lint
run: ./gradlew lint
- name: Build
run: ./gradlew assembleDebug
Спајање у develop мора да се придржава строгих правила како би се одржала стабилност интеграционе гране. Кршење ових правила доводи до конфликата, сломљених компилација и губитка времена тима.
Правило ажурности PR-а је посебно важно. Ако је feature грана креирана пре недељу дана, а develop је отишао напред за 50 комитова, директно спајање може довести до конфликата које је боље решити у контексту PR-а, а не у develop-у.
Branch protection rules (правила заштите гране) — подешавања на нивоу GitHub-а, GitLab-а или Bitbucket-а која спречавају неисправне промене у develop-у. Она гарантују да чак ни случајни push неће сломити интеграциону грану.
Препоручена правила заштите за develop:
Подешавање заштите develop-а траје 10 минута, али спречава недеље застоја повезаних са сломљеном интеграционом граном. За мобилне пројекте са вишеплатформским тимовима ово је посебно актуелно.
Размотримо типичан дан програмера: ујутру ажурира develop, креира нову feature грану, а након завршетка задатка спаја промене назад у develop.
# Јутарња синхронизација develop-а
git checkout develop
git pull origin develop
# Креирање нове feature гране од develop-а
git checkout -b feature/add-push-notifications
# Рад на функцији...
git add . && git commit -m "Add FCM integration"
# Ажурирање develop-а током развоја
git fetch origin develop
git rebase origin/develop
# Након одобрења PR-а — ажурирање локалног develop-а
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications
Команда git pull у develop-у извршава истовремено две операције: git fetch (преузима нове комитове са сервера) и git merge (спаја их са локалном граном). За develop је ово стандардни начин синхронизације.
Ако је у develop стигао код који је сломио компилацију, потребно је деловати брзо. Сваки сат застоја develop-а значи блокиран рад целог тима програмера.
Ако је у develop стигао код који је сломио компилацију, користите git revert за креирање новог комита који поништава проблематичне промене. Немојте користити git reset у develop-у — ово преписује историју која већ постоји код других учесника.
# Проналажење проблематичног комита
git log --oneline develop
# Поништавање комита путем revert-а (безбедно)
git revert a1b2c3d
# Слање исправке у удаљени develop
git push origin develop
# Преглед промена у одређеном комиту
git show a1b2c3d --stat
Често постављана питања
За пројекте са једним-два програмера, develop је често сувишан — довољни су main и feature гране. Чим тим порасте на 3+ особа, develop постаје неопходан за изолацију незавршених функција од стабилног продукционог кода.
Не, директно писање у develop је забрањено у било ком професионалном пројекту. Све промене пролазе кроз Pull Request са code review-ом и аутоматским проверама. Изузетак — административне измене README-а или CI конфигурације, али и њих је боље радити кроз PR.
У trunk-based development-у не постоји засебна develop грана — сви програмери раде у main-у са веома кратким feature гранама (1-2 дана). Ово је алтернатива Git Flow-у, популарна у DevOps култури са високим нивоом аутоматизације тестирања.
Након сваког издања, release грана се спаја назад у develop како би се у њу унеле све исправке направљене у процесу припреме издања. Ако се то не уради, develop ће се разликовати од кода издања, што ће изазвати конфликте при следећем издању.
Ако је develop сломљен, старији програмер креира hotfix грану од последњег стабилног комита, поправља проблем и спаја исправку директно у develop кроз PR са посебним статусом. Након враћања, спроводи се анализа узрока квара.
Закључци
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође