-
Notifications
You must be signed in to change notification settings - Fork 1
Branchek kezelése
Az alapvető struktúra leírása a Branching modell oldalon található. Ez az oldal a leggyakoribb esetekre vonatkozó példák gyűjtőhelye, szükség esetén nyugodtan bővíthető.
A példák tiszta working directoryra vonatkoznak, a különböző összeütközések megoldását itt egyelőre nem részletezzük.
Mivel a "successful" branching modellt próbáljuk követni, a branchek kezelésének megkönnyítésére használható a git flow nevű git "extension" gyűjtemény is. A telepítésére vonatkozó információk a projekt wikijében találhatóak. Ugyanakkor a branchek kezelése a hagyományos git parancsokkal is megoldható.
A git flow megfelelő beállítását (fő branch nevek és prefixek) elvégzi a git clone
után futtatandó scripts/git-flow-setup.sh
script.
Ha egy fejlesztéssel járó issue hozzánk lett rendelve, első dolgunk, hogy a Branching modell oldalon leírtaknak megfelelő kiindulási branchről indítsunk egy branchet, az ott leírtaknak megfelelő névvel, ami az issuera vonatkozó változtatásokat fogja tartalmazni. Általában a develop
branch lesz a kiindulási alap és onnan issue brancheket hozunk létre , így ebben a példában ez szerepel (példa issue: #123 - Foobar Implementáció).
$ git checkout develop
$ git checkout -b i-123-foobar-implementacio
Ha git flowt használunk, akkor csupán ennyi a dolgunk:
# az i- prefixet a git flow hozzáteszi a branch nevéhez
$ git flow feature start 123-foobar-implementacio
Ha meg akarjuk osztani másokkal egy issue-n végzett munkánkat, akkor pusholni kell az origin remote-ra.
# ha az i-123-foobar-implementacio branchen vagyunk, első alkalommal
$ git push -u origin i-123-foobar-implementacio
# később
$ git push
Git flow esetén:
$ git flow feature publish 123-foobar-implementacio
Ha másik branchre váltottunk és folytatni szeretnék a munkát, vagy valakinek az eddigi változtatásait szeretnénk megtekinteni (ilyenkor célszerű egy git fetch
-et futtatni), akkor térjünk át a kívánt branchre:
$ git checkout i-123-foobar-implementacio
Git flow esetén:
$ git flow feature checkout 123-foobar-implementacio
Mivel develop
és master
védett branchek, és csak pull request által merge-ölhető beléjük kód, a git flow erre vonatkozó parancsai (git flow [...] finish
) nem használhatóak a különböző branchek lezárására, hanem a következők szerint kell eljárni:
Ha úgy gondoljuk, megoldottuk az issue-ban szerplő problémát, pusholjuk a még nem publikált módosításainkat, majd hozzunk létre egy pull requestet githubon. Fontos, hogy a merge célpontjául a megfelelő branchet válasszuk ki. Ebben az esetben ez a develop
branch.
Ha a review során még módosításokra lesz szükség, commitoljuk és pusholjuk őket.
Ha a pull request merge-ölésre került, akkor töröljük a branchet.
Feature vagy bugfix esetén a fenti folyamatban develop
-ról leágazó és oda visszatérő issue branchet használunk, i-{issue-id}-{rovid-leiras}
névvel. Git flow használata esetén a git flow feature start {issue-id}-{rovid-leiras}
, git flow feature publish {issue-id}-{issue-leiras}
és git flow feature checkout {issue-id}-{rovid-leiras}
parancsokat használjuk.
Kísérleti branch esetén develop
-ról, vagy másik issue branchről ágazunk le, e-{user}-{rovid-leiras}
névvel. Ennek nincs git flow megfelelője. Ezeket a brancheket általában nem merge-öljük, hanem a belőlük szükséges változtatásokat pl. cherry-pick
-kel átemeljük a megfelelő branchbe, majd a kísérleti branchet töröljük.
Release branch esetén develop
-ról ágazunk le r-{verzio}
névvel és a pull request céljának master
-t állítjuk be. Git flow esetén használhatóak a git flow release start r-{verzio}
és git flow release publish r-{verzio}
parancsok.
A release branchen szükséges bugfixek elkészítéséhez az adott release branchről leágazó és oda visszatérő issue branchet használunk, i-{issue-id}-{rovid-leiras}
névvel. Git flow használata esetén a git flow feature start {issue-id}-{rovid-leiras} <release branch neve>
, git flow feature publish {issue-id}-{issue-leiras}
és git flow feature checkout {issue-id}-{rovid-leiras}
parancsokat használjuk.
Hotfix brancheken végezzük az éles verzión szükséges azonnali javításokat. Ezek master
-ről ágaznak le, és oda térnek vissza, h-{issue-id}-{rovid-leiras}
névvel. Git flow esetén a git flow hotfix start {issue-id}-{rovid-leiras}
és git flow hotfix publish {issue-id}-{issue-leiras}
parancsokat használjuk.