See dokument on koostatud selleks, et ühtlustada ettevõtte sisemisi Git Flow reegleid. See meetod ei ole puhta Git Flow tutvustamine, kuna see on segu nii Git Flow kui ka GitLab Flow'st, mille puhul on ettevõtte parimad tavad aastate jooksul välja töötatud. See aitab hoida repositooriumi ajalugu puhtana ja loetavana ning paremini kontrollida muudatusi ja projekti elutsüklit.
See dokument on kirjutatud selleks, et ühtlustada ettevõtte sisemisi GitFlow reegleid. See meetod ei tutvusta puhast GitFlow'd, kuna see on segu nii GitFlow'st kui ka GitLab Flow'st, mille puhul on ettevõtte parimad tavad töötatud paljude aastate jooksul. See aitab hoida repositooriumi puhta ja loetava ajaloo ning parema kontrolli muudatuste ja projekt elutsüklid.
Repositooriumi initsialiseerimine
Pärast repositooriumi initsialiseerimist loo arendada ja kapten haru, kui see ei ole vaikimisi lisatud. Arendusharu peaks sisaldama arendus kood mis on peegliks masterharu peeglile, mis sisaldab uusi funktsioone. Master sisaldab koodi stabiilset versiooni, mis esindab tootmisseisundit. Mõlemal on lõpmatu eluiga ja võrreldes teiste harudega Git Flow's ei eemaldata neid kunagi. Seadistage korralikud kaitsereeglid: nõuda pull taotluse läbivaatamist enne ühendamist ja nõuda staatuse kontrolli läbimist enne ühendamist. Samuti võite kaaluda, kas lubada ainult valitud meeskond liikmetele, et ühendada muudatused masterisse.
MÄRKUS: Mõnikord on projekti jaoks oluline lisada rohkem lõpmatuid harusid, et näiteks esindada olemasolevaid keskkondi. Hoidke siiski võimaluse korral "kahe reeglit".
Funktsiooni harud
Kui hakkate antud funktsiooniga töötama, veenduge kõigepealt, et teil on oma arendada haru sünkroonitud.
$ git checkout develop && git pull --rebase
Seejärel kontrollige oma funktsiooniharu. Nimetage see vastavalt antud skeemile: feature-JIRA-TASK-ID või võite ka seda reeglit rikkuda ja nimetada seda teisiti. Sel juhul veenduge, et see ei läheks vastuollu release, hotfix, bugfix, development või master branch jaoks reserveeritud mustritega. JIRA ülesande ID-de säilitamine aitab teil oma funktsiooniharusid tõhusamalt hallata.
$ git checkout -b feature-JIRA-TASK-ID develop
See haru peaks eksisteerima nii kaua, kuni antud funktsioon on välja töötatud ja seejärel ühendatakse vanemharu. Kohalikku haru üleviimiseks järgige seda käsku:
Soovitatav on lisada oma kohalikku harusse rohkem kommiteid, järgides reeglit "Commit early and often". Lõpuks tuleb need siiski suruda ühte JIRA ülesannet esindavasse kommitisse. Sageli kommiteerimine aitab teil oma arendusajalugu hallata. Kui funktsioon on valmis, on aeg avada Pull Request, et arendada haru. Kõigepealt võite pushida oma kohaliku haru, kui seda ei ole liiga kaugele lükatud:
Enne tõmbetaotluse avamist veenduge palun järgmises:
a nõuetekohane kirjeldus on antud - tavaliselt oleksite linkida oma JIRA ülesanne, kuid võite lisada ka mõnda kasulikku teavet, mis on seotud kehtiva koodiga
CircleCI sammud läbiti edukalt
teie meeskonnaliikmed määrati - hea tava on kaasata kõik oma meeskonnaliikmed volitatud isikuteks.
. retsensendid valiti välja - ülevaatajate arv sõltub teie meeskonnast
teie kood on tegelikult valmis läbivaatamiseks - vaadake oma koodi veelkord üle, mõelge veelkord, kas on veel midagi refaktoorida, testige seda lokaalselt ja tagada, et see on valmis edasisteks sammudeks.
on olemas puuduvad liitmiskonfliktid ja haru on ajakohane koos developiga - kui neid on, siis lahendage need kõigepealt
$ git checkout develop && git pull --rebase
$ git checkout feature-JIRA-TASK-ID && git rebase develop # use -i flag for squash
$ git push -f origin feature-JIRA-TASK-ID 1TP65Kasutage seda ettevaatlikult, kuna -f lipp kirjutab kaugrepositooriumi üle.
hoida ainult olulised kommitid - iga commit peaks olema esindatud näiteks JIRA ülesandena, JIRA-TASK-ID: Uue funktsiooni konfiguratsioon; teised peaksid olema ümberhindamise ajal kokku surutud oma haru koos arendusharuga
teil on valitud õige sihtkoha haru
te ei unusta muuta oma JIRA ülesande staatust
Funktsiooni haru ühendamine
On aeg ühendada oma muudatused arendusharusse, kui:
valitud meeskonnaliikmed kiitsid tõmbetaotluse heaks
kõik testid on edukalt lõpetatud
ei ole mingeid ühinemiskonflikte ja kommiteerimise ajalugu näeb hea välja
Seda võib teha kas projektijuht või funktsioonide arendaja. Ühinemise teostamiseks järgige järgmisi samme:
Väljaande harud peaks looma jooksva väljaande eest vastutav isik. Tavaliselt luuakse väljalaskeid perioodiliselt, näiteks vastavalt sprint elutsükkel.
Semantiline versioonimine
Avaldamisharule õige nime ja vastava sildi andmine ei ole alguses lihtne ülesanne. Hea tava on alustada semantilise versioonimise kasutamist (https://semver.org/), mis võimaldab paremat kontrolli ja teeb git-ajaloo lugemise lihtsamaks. Versioonijada ehitatakse vastavalt skeemile MAJOR.MINOR.PATCH:
MAJOR - muudatus, mis kujutab endast ühildumatuid API muudatusi
MINOR - uute funktsioonide lisamine tagasiulatuvalt ühilduvana
Võite kasutada ka spetsiaalseid järelliiteid, näiteks neid, mis tähistavad beeta- või pärandharusid, või luua eelväljaandeid. Sellisel juhul nimetage see korralikult, nt 1.1.0-beta.4, 1.1.0-beta.5 või 1.1.0-alpha.
Vabastamise tegemine
Väljaandmisharu peaks olema arenduse filiaal ja see võiks sisaldada ainult veaparandustega seotud kommiteid.
Haru nimi peaks põhinema versioonil, mille eesliide on release-: release-MAJOR.MINOR.PATCH. Väljaandmise haru peaks olema täielikult testitud nii automaatselt kui ka käsitsi kohta lavastuskeskkond. Kui vead tekivad, on see viimane võimalus korralike paranduste tegemiseks ja kogu protsessi uuesti käivitamiseks, kuni see ei ole positiivselt kontrollitud ja valmis edasiseks töötlemiseks. Seejärel tuleks pushida release commit, koos praeguse release versiooni stringi muudatustega failides, näiteks package.jsonis. See peaks mõjutama ka CHANGELOG.md faili. See aitab teil jälgida kõiki muudatusi enne korralikku vabastamist ja valmistada sisu ette GitHubi vabastamiseks, kui ühendamisprotsess on lõpetatud. Ühe faili värskendus peaks koosnema kõigist väljalaske muudatustest, mis on rühmitatud kolme kategooriasse: funktsioonid, parandused ja hooldus.
Esimeses etapis veenduge, et nii develop- kui ka master-haru on ajakohased.
Siinkohal võib otsustada luua teise tõmbetaotluse masterile koos release-haruga. Võib olla hea mõte teha täiendav kontroll, kui kõik testid läbivad hästi kaugemas masinas.
$ git checkout master
$ git merge release-M.M.P
$ git tag -a M.M.P # lisateade võib olla seatud lipuga -m
$ git push origin M.M.P
$ git push origin master
$ git branch -d release-M.M.P
$ git push origin :release-M.M.P
Seejärel minge GitHubi avalduste lehele ja vajutage nuppu "Draft new release". Valige kuvatavas vormis praeguse versiooni silt, määrake väljaande pealkiri, mis sarnaneb väljaande kommiteerimisele (Product Name M.M.P release), ja korralik kirjeldus, mis põhineb failil CHANGELOG.md. Avalike projektide puhul peaks kirjeldus sisaldama loetelu kõigist praeguses versioonis sisalduvatest PR-dest.
Kui mõned veaparandused on rakendatud release-harule, veenduge, et olete oma arendusharu uuendanud:
Peamine erinevus vigade ja kuumade paranduste vahel on nende sihtharud.
Vigade parandamine
Vigade parandamine peaks olema ainus viis koodi uuendamiseks enne selle ühendamist masterisse. Kõigepealt looge haru praegusest funktsiooniharust. Veenduge, et see on lokaalselt ajakohane.
Seejärel tehke vajalikud muudatused. Kui protsess on lõpetatud, looge pull request ja suunake see release-harule. Järgige juhiseid funktsiooniharu osas. Teie lõpliku commit'i pealkiri peaks vastama antud skeemile: "Bugfix M.M.P: Problem essence fix". Kui pull request on heaks kiidetud, on aeg see praegusesse release'ile ühendada.
Seejärel järgige tavapäraseid arendusetappe ja kui protsess on lõppenud, looge pull request, mille sihtmärgiks on master-haru. Pidage meeles, et lõplik commit peaks vastama antud skeemile "Hotfix X.Y.(Z + 1): Problem essence fix". Kui iga kontrollpunkt on edukalt läbitud, tehke ühinemine masterisse. Need sammud erinevad veaparanduse puhul esitatud sammudest, kuna meil on vaja bumpida praegune versioon.
$ git checkout develop && git pull --rebase
$ git checkout feature-JIRA-TASK-ID && git rebase develop # use -i flag for squash
$ git push -f origin feature-JIRA-TASK-ID 1TP65Kasutage seda ettevaatlikult, kuna -f lipp kirjutab kaugrepositooriumi üle.
Muudatuste ühendamine ja haru kustutamine
$ git checkout develop # haru peaks selles etapis olema sünkroonitud develop haruga.
$ git merge feature-JIRA-TASK-ID
$ git push origin develop
$ git branch -d feature-JIRA-TASK-ID
$ git push origin :feature-JIRA-TASK-ID