V ostatnom čase intenzívnejšie riešime nábor nových ľudí, pričom sme si všimli zaujímavý trend. Freelanceri a dokonca aj ľudia z malých firiem nemajú žiadnu skúsenosť s verziovaním svojich projektov pomocou všeobecne dostupných nástrojov.

Vo WebSupporte používame dva najrozšírenejšie systémy pre správu verzií, a to GIT a SVN. Momentálne používame viac SVN, ale máme ambíciu postupne premigrovať na GIT. Je mnoho dôvodov, prečo použiť verziovanie, no ja opíšem tie najdôležitejšie pre mňa.

1. Každý projekt má verzie

Neoddeliteľnou súčasťou programovania je inkrementálne pridávanie funkcionality. Ak sa trocha odosobníme od projektu a posnažíme sa naň pozrieť s nadhľadom, tak v podstate každá novonaprogramovaná funkcionalita aplikácie sa dá považovať za verziu. Práve z tohto dôvodu je výhodné mať nástroj, ktorý poskytuje prehľad medzi verziami. Vidím, kedy som čo do projektu pridal, a viem sa jednoducho vrátiť k predošlej verzii projektu. V prípade chyby som pružnejší a viem efektívne vrátiť projekt do predošlého stavu.

2. Aj tím ťaží z verzií

Každý, kto pracoval v tíme bez použitia verziovania, mi určite dosvedčí, že najťažšie je ustriehnuť prepisovanie súborov. Práca je neefektívna a nebezpečná. Pri verziovaní tieto problémy neexistujú. Každý člen tímu má svoju verziu, na ktorej pracuje, zmeny sa neskôr automaticky spoja do jedného celku. Všetci zúčastnení tak majú kontrolu nad svojou prácou a nemusia sa báť nežiaduceho prepisovania.

3. Ukáž mi karty

Verziovanie neskutočne napomáha prehľadnosti a vnáša potrebné svetlo do temného programovania :). Pri odosielaní zmien na server musí každý člen písať správy opisujúce danú zmenu. Toto má za následok prehľadnosť a porozumenie práci ostatných členov tímu. Ku každému riadku v budovanom systéme existuje jeho história. Je veľmi jednoduché pozrieť si kto, čo a kedy robil na danom mieste. Tím sa neskrýva a ľudia vedia, za kým môžu ísť v prípade nejasností.

Ako fungujeme my?

Videl som už viacero spôsobov používania verziovania v rôznych firmách. Niektoré z nich boli štastnejšie, iné menej. Vo WebSupporte sme si zvolili spôsob, ktorý nám umožnil najväčšiu pružnosť a efektivitu pri vývoji a prípadnom fixovaní bugov.
Každý náš projekt je rozdelený na vývojovú a produkčnú vetvu. Produkčná vetva, ako z jej názvu vyplýva, je nasadená v produkcii a je označovaná familiárne slovíčkom „LIVE“. Tu neprebieha vývoj novej funkcionality, na LIVE sa robia len fixy a opravy chýb. LIVE má svoju verziu, podľa interného číslovania. Momentálne sa v produkcii nachádza verzia 1.5.5 a 1.5.6 je už za dverami.
Vývojová vetva slúži na vývoj novej funkcionality, ktorá je rozsiahlejšia a obnáša testovanie a programovanie viacerých ľudí. Výhodou oddelených vetiev je, že v žiadnom prípade sa nám nestane, aby sa nedokončená vec dostala na LIVE a spôsobila tým nestálosť systému, prípadne iný kritický bug.

Tento blogpost som zámerne venoval filozofii a nie technológii. Verím, že tí z Vás, čo doposiaľ nepoužívali verzovanie systému, mu po otestovaní prídu rýchlo na chuť a o pár týždňov si povedia, ako bez neho mohli žiť. Tí, ktorí by sa chceli hlbšie ponoriť do terminológie a významu SVN, tak pre tých som pripravil popis základných častí prvkov SVN.

Komentáre