Semantičko kontroliranje verzija programskog kôda

Pregled sadržaja

Organizacija pisanja programskog koda nije jednostavan zadatak. Svi griješimo a i uz rigorozno testiranje bugova nisu pošteđene ni najveće tvrtke. Što ako se dogodi neka fatalna greška i cijeli sustav se sruši? Treba istražiti što se dogodilo a taj proces se može i oduljiti a za to vrijeme poslovanje trpi. Trebali bi imati siguran način brzog vraćanja sustav na stanje prije ažuriranja. A tu nam pomaže kontrola verzija.

Što je kontrola verzija

Kontrola verzija je način praćenja svake izmjene datoteke ili samo određenog dijela programskog kôda. Kontrola nam omogućuje lakše praćenje pojedinačnih radnji koje su bile izvršene u svakoj iteraciji i kako su te promjene mogle utjecati na web stranice.

Takav proces dostupan nam je pomoću specijaliziranih softverskih alata koje prate svaku i najmanju izmjenu kôda u posebnoj vrsti baze podataka. Alati za kontrolu su veoma bitni u razvojnim rješenjima. Koriste ga mali i veliki timovi. Pogotovo u timovima kada više članova radi na istom softveru, treba postojati vrlo dobra organizacija.

Programeri neprestano pišu novi kôd i mijenjaju postojeći. Jedan programer možda radi na nekoj novoj značajci dok drugi korigira greške oko kompatibilnosti između različitih sustava. Svaki programer može unijeti svoje promjene u nekoliko dijelova različitih datoteka. Kada više developera radi na softveru postaje iznimno teško paziti kako tko doprinosi. Kontrola verzija prati svaku pojedinačnu promjenu svakog člana i spriječava sukobe koji bi mogli nastati prilikom rada na istom dijelu kôda koje je drugi programer napravio u isto vrijeme.

Kada se ne koristi kontrola verzija često dolazi do problema. Kada smo napravili promjene koje su nekompatibilne s drugim datotekama i moraju se ručno mukotrpno raspetljati i preraditi. Ii smo datoteku slučajno prekoračili novom verzijom a nismo to planirali. Ili je došlo do nekakve treće greške u kôdu za koje je ponekad potrebno vrlo detaljno debugiranje kako bi pronašli pravi problem. Ako se otkrije neka greška u sustavu, programeri mogu usporediti prethodne verzije kôda prema datumu objave. Kontrola verzija štiti kôd od neželjenih posljedica.

Možda bi bili primorani da si pomognemo na jedan od šlampavih načina dupliciranjem datoteke, postavljanjem sufiksa kao “final” i/ili ručno postavljanjem verzija (1.1, 1.2…) u naziv datoteke ili u zasebne direktorije. Ili možda su se blokovi kôda zakomentirali da se ne izvršavaju a ipak da se ne obrišu ako bi se pojavila potreba da taj dio kôda ipak ponovno zatreba. Kontroliranje verzija takav način rada odbacuje i postavlja nas na pravi put profesionalizma.

Vraćanje stare verzije

Ako bi nešto eventualno pošlo po zlu, prethodna verzija može se vratiti u bilo kojem trenutku. Također, uz pomoć kvalitetno vođene dokumentacije dodatno možemo shvatiti što se radilo kako bi imali točan uvid, kako bi lakše istražili i otklonili problem te kormilo usmjerili na pravi put.

No, greške nisu jedini razlog za vraćanje verzije. Ponekad odlučimo da nam nedavna promjena nije poželjna i želimo vratiti starije stanje na prethodnu poziciju.

Prednosti kontrole verzija

Potpuna povijest promjena svake datoteke do najmanjih detalja

Svaku promjenu koju je bilokoji član napravio tijekom godina može se vidjeti. Bez obzira radi li se o kreiranje datoteke, brisanju, uređivanje svakog dijela sadržaja datoteke čak i ako se promijenilo samo jedno jedino slovo.

Grananje i spajanje datoteka

Svaki puta kada poželimo stvoriti novu funkcionalnost na postojećem sustavu, dobra praksa je stvoriti novu granu na stablu softvera te unutar nje raditi na rješenju. Kada je stvar gotova grana se samo prikopča na glavno stablo i voilà, sustav je nadograđen. Rad na granama je pametan je način rada i kada samo jedan developer radi samostalno a pogotovo je nužno u slučaju timova. Grana zadržava sve procese rada na njoj potpuno neovisno o drugim granama u sustavu.

Web poslužitelji za verzioniranje kôda

Jedan od najpopularniji sustava kontrole je Git. Besplatan je i otvorenog kôda. Najveći web hosting koji omogućuje skladištenje njegovog kôda je GitHub. Koristi ga i WordPress a od 2018. godine u vlasništvu je Microsofta. Drugi vrlo popularni je Bitbucket koji je ima prednost na GitHubom u tome što je bio besplatan dok se GitHub prije plaćao.

Osim verzioniranje kôda, takvi sustavi omogućuju nam još dosta drugih stvari. Planiranje projekta, testiranje, migracija na live… Svakom objavom kôda možemo podesiti da se okine nešto što nam pomoći.

Kontrola verzija u WordPressu

Kontroliranje verzija nije vezano samo za rad na aplikacijama već se može (a i treba) primijeniti i na CMS poput WordPressa. U tom slučaju potrebno je pratiti izmjene na temi i sve ostalo je isto kao i kod “pravog” softvera. Naravno, kontrola rada se bazira na pretpostavci da se programira vlastita tema po mjeri a ne kupi gotovi predložak koji se samo instalira i eventualno u child temi nešto prekorači. Osim tema, često se to radi i na dodatacima (pluginovima) koji su vlastite izrade.

Revizije sadržaja

Ako zanemarimo načas programiranje, svaka promjena unutar sadržaja koju napravimo bilježi se u sustavu. Svako takvo ažuriranje može se vratiti ako se pojavi potreba. WordPress dolazi s podrškom za kontrolu verzija stranica i objava. Ako se pojavi potreba da se poželi vratiti  stanje teksta neke objave na neku prijašnju verziju, moguće je u tren oka. Potrebno je samo potražiti sekciju revizija kod uređivanja objave a ako ih nema, potrebno je prvo uključiti opcije zaslona (Screen options) u gornjem desnom kutu.

Revizija sadržaja uključene su po zadanim postavkama ali moguće je te isključiti na razini glavne WordPressove konfiguracijske datoteke wp-config.php ili preko nekog dodatka. Možemo, primjerice, podesiti da WordPress čuva samo posljednje 3 revizije kako nam se baza podataka ne bi nepotrebno punila, što može biti nepotrebno kod izrazito velikih web stranica. S druge strane, ako su revizije bile isključene, tada se promjene nisu spremale i uključivanjem će se to odnositi na buduće promjene. Također, ako su se koristili nekakvi alati za čišćenje i optimizacije baze podataka u tom slučaju su vrlo vjerojatno i revizije obrisane.

Sažetak

Sasvim je moguće razvijati softver bez bilokakvog korištenja kontrole verzija. Međutim, takvim načinom rada izlažemo projekt velikom riziku. Dobar softver ima i dobru organizaciju. Nije ni uputno pitati se trebamo li koristiti kontrolu verzija već koji sustav kontrole da koristimo.