Verziókezelési stratégia

Ismétlés: Nagyon fontos, hogy egy commitban csak egy funkció fejlesztés, összefüggő változtatások, vagy egy hibajavítás legyen, hogy elemi szinten kezelhetőek legyenek.

Fő branchek

A repository-ban két állandó branch folyamatosan létezik: a master és a develop. A master mindig csak a stabil kiadott szoftver verziókat tartalmazza. A develop branch-ben pedig maga a fejlesztés történik. (Az ábrán a körök commitokat jelölnek)

No Fast Forward opció mergeléskor (parancssorban --no-ff kapcsoló)

Egy új commitot hoz létre mergeléskor és megőrződik a history-ban a beolvasztott branch és commitjai is. Így a beolvasztott változtatások egy commitban fognak megjelenni. Ezzel szemben, ha ezt az opciót nem használjuk akkor a branch minden commitját behúzza a beolvasztó branchbe, mintha végig ott fejlesztettünk volna. Ez eggyel több commitot eredményez, de a beolvasztott branch minden változtatása egy commitként kezelhető lesz. Így látható egységként, hogy egy funkcióhoz milyen commitok tartoznak.

Támogató branchek

- Feature branch: developból ágazik le. Egy nagyobb új funkció fejlesztését tartalmazza. Elnevezés: bármi, kivéve master, develop, release-*, és hotfix-*.

Illusztráció a fentebbi ábra. A funkció kifejlesztése után mergeljük vissza a developba No Fast Forward opcióval, majd siker esetén törölhetjük a feature branchet és pusholhatunk a változtatásokat a szerverre.

- Release branch: developból ágazik le és developba és masterbe mergelődik vissza. A masterbe küldött commit lesz a tényleges release. Ennek a branchnek a funkciója a release-re szánt verzió kitesztelése, felfedezett hibák javítása.

Elnevezése: release-<verziószám>

Ezt is a No Fast Forward opcióval mergeljük mindkét fő branch-be. Végül törölhető a release branch.

A masterbe küldött releasehez adjunk Tag-et a verziószámmal, pl 1.2 (Jobb egérgomb/TortoiseGit/Create Tag...).

- Hotfix branch: kiadott verzió bug javítását tartalmazza. Egy releaseből (pl 1.2) ágazik le a masterből.

Elnevezés: hotfix-<verziószám>

A hiba javítása után mergeljük a develop adott állapotába és a masterbe is vissza egy új release tag-gel, ami később referenciaként szolgál a kiadott verzióra (pl 1.2.1) . Ha éppen létezik egy release branchünk akkor develop helyett oda commitoljuk a hibajavítást, hiszen az majd visszamergelődik a developba de így a releasebe is bekerül.