Develop Branch — este ramura principală de integrare în Git Flow, în care sunt îmbinate toate ramurile feature finalizate înainte de pregătirea unei lansări. Spre deosebire de main, develop conține cele mai noi modificări, dar încă nelansate — aici are loc integrarea zilnică a codului de la toți dezvoltatorii echipei. Conform datelor Atlassian, 2024, develop este o ramură obligatorie în Git Flow și asigură un mediu de integrare stabil pentru echipă.
Principalele puncte
Develop Branch (ramura de dezvoltare) — este o ramură de lungă durată în Git Flow, care servește ca nod central pentru integrarea codului de la toți dezvoltatorii. În ea sunt îmbinate ramurile feature după finalizarea dezvoltării și trecerea prin code review.
Codul în develop se află întotdeauna într-o stare gata pentru crearea unei lansări, deși încă nu a fost publicat în producție. Aceasta înseamnă că toate funcționalitățile din develop au trecut prin review, testare și verificări de integrare, dar încă așteaptă ciclul lor de lansare.
Spre deosebire de main, unde fiecare versiune de cod este o lansare, develop conține un flux continuu de modificări. Commiturile în develop apar pe măsură ce ramurile feature sunt îmbinate, ceea ce poate avea loc de mai multe ori pe zi.
Conform datelor Vincent Driessen, 2010, develop este un element cheie al unui model de branching de succes, deoarece separă munca în desfășurare de versiunile gata de lansare.
Înțelegerea diferențelor dintre develop și main este esențială pentru lucrul corect în Git Flow. Aceste ramuri îndeplinesc funcții diferite și au cerințe diferite de stabilitate.
| Caracteristică | Develop | Main / Master |
|---|---|---|
| Scop | Integrarea funcționalităților noi | Cod stabil de lansare |
| Stabilitate | Ridicată (după teste) | Maximă (producție) |
| Frecvența commiturilor | Zilnic (îmbinare feature) | La lansări (la 1-4 săptămâni) |
| Sursa ramurilor | Din ea se creează feature | Din ea se creează hotfix |
| Îmbinare | Din feature prin PR | Din release prin merge |
Separarea în develop și main permite echipei să integreze continuu cod nou fără a risca stabilitatea versiunii de producție. Dezvoltatorii își pot vedea codul în develop imediat după aprobarea PR, chiar înainte de lansarea oficială.
În modelul Git Flow, develop ocupă un loc central între ramurile feature (sursa modificărilor) și ramurile release (pregătirea pentru lansare). Înțelegerea acestei ierarhii este baza ramificării eficiente.
O astfel de structură garantează că develop conține întotdeauna cea mai recentă versiune de cod cu toate funcționalitățile noi, iar main — doar cod de producție verificat. Acest lucru este deosebit de important pentru proiectele mobile cu un ciclu lung de revizuire în App Store și Google Play.
Develop acționează ca o verigă centrală între ramurile feature, release și hotfix. Înțelegerea direcțiilor de îmbinare este baza pentru prevenirea conflictelor și a pierderii commiturilor.
Calitatea codului în develop trebuie să fie ridicată, dar nu absolută. Spre deosebire de main, unde fiecare eroare înseamnă un hotfix urgent, develop permite mici deficiențe care vor fi corectate înainte de lansare.
Cerințe minime pentru cod înainte de îmbinarea în develop:
Verificările automate în pipeline-ul CI/CD trebuie să se ruleze la fiecare push în develop. Dacă compilarea se strică, dezvoltatorul responsabil trebuie să corecteze problema într-o oră sau să revină la commitul său.
Configurarea GitHub Actions pentru develop garantează că fiecare PR înainte de îmbinare trece printr-o verificare automată. Pipeline-ul tipic include compilare, teste și linting.
# GitHub Actions — verificarea develop după îmbinare
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
Îmbinarea în develop trebuie să respecte reguli stricte pentru a menține stabilitatea ramurii de integrare. Încălcarea acestor reguli duce la conflicte, compilări stricate și pierdere de timp a echipei.
Regula actualității PR este deosebit de importantă. Dacă ramura feature a fost creată acum o săptămână, iar develop a mers înainte cu 50 de commituri, îmbinarea directă poate duce la conflicte care sunt mai bine rezolvate în contextul PR-ului, nu în develop.
Branch protection rules (reguli de protejare a ramurii) — sunt setări la nivel de GitHub, GitLab sau Bitbucket care previn modificările incorecte în develop. Ele garantează că nici măcar un push accidental nu va strica ramura de integrare.
Reguli de protejare recomandate pentru develop:
Configurarea protejării develop durează 10 minute, dar previne săptămâni de întreruperi legate de o ramură de integrare stricată. Pentru proiectele mobile cu echipe multi-platformă, acest lucru este deosebit de relevant.
Să examinăm o zi tipică a unui dezvoltator: dimineața actualizează develop, creează o nouă ramură feature, iar după finalizarea sarcinii îmbină modificările înapoi în develop.
# Sincronizarea de dimineață a develop
git checkout develop
git pull origin develop
# Crearea unei noi ramuri feature din develop
git checkout -b feature/add-push-notifications
# Lucrul la funcționalitate...
git add . && git commit -m "Add FCM integration"
# Actualizarea develop în timpul dezvoltării
git fetch origin develop
git rebase origin/develop
# După aprobarea PR — actualizarea develop local
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications
Comanda git pull în develop efectuează simultan două operații: git fetch (preia noile commituri de pe server) și git merge (le îmbină cu ramura locală). Pentru develop, aceasta este modalitatea standard de sincronizare.
Dacă în develop a ajuns un cod care a stricat compilarea, trebuie acționat rapid. Fiecare oră de întrerupere a develop înseamnă muncă blocată pentru întreaga echipă de dezvoltatori.
Dacă în develop a ajuns un cod care a stricat compilarea, folosiți git revert pentru a crea un nou commit care anulează modificările problematice. Nu folosiți git reset în develop — aceasta rescrie istoria care există deja la alți participanți.
# Găsirea commitului problemă
git log --oneline develop
# Anularea commitului prin revert (sigur)
git revert a1b2c3d
# Trimiterea corecturii în develop la distanță
git push origin develop
# Vizualizarea modificărilor într-un commit specific
git show a1b2c3d --stat
Întrebări frecvente
Pentru proiecte cu unul-doi dezvoltatori, develop este adesea redundant — sunt suficiente main și ramurile feature. De îndată ce echipa crește la 3+ persoane, develop devine necesar pentru izolarea funcționalităților neterminate de codul de producție stabil.
Nu, scrierea directă în develop este interzisă în orice proiect profesional. Toate modificările trec prin Pull Request cu code review și verificări automate. Excepție — modificări administrative ale README sau configurației CI, dar și acestea sunt mai bine făcute prin PR.
În trunk-based development nu există o ramură separată develop — toți dezvoltatorii lucrează în main cu ramuri feature foarte scurte (1-2 zile). Aceasta este o alternativă la Git Flow, populară în cultura DevOps cu un nivel ridicat de automatizare a testării.
După fiecare lansare, ramura release este îmbinată înapoi în develop pentru a aduce în ea toate corecturile făcute în procesul de pregătire a lansării. Dacă acest lucru nu se face, develop va diferi de codul de lansare, ceea ce va provoca conflicte la următoarea lansare.
Dacă develop este stricat, dezvoltatorul senior creează o ramură hotfix din ultimul commit stabil, corectează problema și îmbină corectura direct în develop printr-un PR cu statut special. După restabilire, se efectuează o analiză a cauzei defecțiunii.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și