Kas ir versiju kontrole?

Ja ir sanācis profesionāli strādāt ar programmatūras izstrādi, ir sanācis arī saskarties arī tādu rīku kā “versijas kontrole” (piemēram, git vai svn). Tas ir izcils rīks, kas palīdzēs programmas izstrādātajam ietaupīt gan sev, gan citiem savu koda daļu, kā arī iegūt kādas programmas vecākas versijas, nepieciešamo kodu vai tā daļas, lai salīdzinātu jau veiktās izmaiņas un iegūtu jaunāko kodu no saviem kolēģiem.

Bet par visu pēc kārtas…

Es esmu saskāries ar viedokli, ka mēs varam iegūt koda daļas vai dažādas versijas bez versiju kontroles izmantošanas. Mums ir iespēja saglabāt dažadas projekta versijas nevis centralizēti uz servera, bet uz datora. Rezultātā, mums datorā glabājas daudz mapes, kur glabājas daudz mūsu izstrādātās programmatūras versijas. Taču, ja Jūs zināt kā strādā versiju kontrole, tad Jūs būsiet pārsteigti, kāpēc cilvēki turpina tā darīt – tomēr regulāri var sanākt sastapties pat ar profesionāliem izstrādātājiem, kuri neizmanto versiju kontroli vai izmanto to nepietiekamā līmenī, nepievēršot tai izteiktu uzmanību (faili tiek saglabāti lokāli). It īpaši mēs varam to pamanīt analizējot to programmētāju darbu, kuri strādā ar iegultajām sistēmām (embedded) ierīcēm. Var būt vairāki iemesli, kāpēc programmētāji nolemj ignorēt versiju kontroli un neizmantot to ikdienā:

  1. Viņi ir slinki;
  2. Viņiem trūkst zināšanu par versiju kontroli;
  3. Viņi strādā tādā veidā gadiem un nevēlas neko mainīt;
  4. Viņi nezina par versiju kontroles rīkiem.

Visi augstāk minētie cēloņi ir vienlīdz slikti. Trešais cēlonis ir slikts jebkurā nozarē un tas ir bijis neveiksmju iemesls daudziem uzņēmumiem. Mans mērķis ir aicināt cilvēkus, kuru grupas es minēju, aprakstot 2. un 4. cēloni. Cilvēkiem, kuri atbilst 1. un 3. punktam, ir nepieciešams atcerēties, ka nevēlēšanās strādāt ar šīm sistēmām ir kļūda. Šī raksta mērķis ir iepazīstināt viņus ar otru pusi, kura ir daudz vērtīgāka nekā viņi domā.

Īsumā – versiju kontrole ir serveris, kurā var uzglabāties dažadas koda daļas, programmētājs jebkurā brīdī var atgriezties pie iepriekšējām programmas versijām tikai ar viena klikšķa palīdzību. Tādā pašā veidā var atjaunot arī kādas noteiktas koda daļas, atgriezties pie tām, salīdzināt un analizēt veiktās izmaiņas. Tā ir sistēma, kas bāzēta uz klients-serveris arhitektūru, kur uz programmētāja datora (klienta) glabājas koda kopija, kuru var sinhronizēt ar servera kopiju.

Šādā veidā cilvēkiem ir vieglāk strādāt pie viena projekta un vieglāk iegūt programmatūras jaunāko versiju no kolēģiem. To var izprast arī sekojošā veidā – programmētājs A strādā pie vienas programmas, atjauno izmaiņas, kuras viņš ir veicis, un ielādē serverī, tad neskatoties uz to, ka viņa dators var salūzt, programmētājs B var iegūt nepieciešamo informāciju no servera. Kad programmētājs B veic kādas izmaiņas programmas kodā, tad programmētājs A var iegūt labojumus un koriģēto kodu, iegūstot to no servera, kur tas glabājas. Tāpat versiju kontroli var uzskatīt par programmas izmaiņu arhīvu, kur var apskatīt visas izmaiņas, kuras tika veiktas visas programmas koda izstrādes laikā. Piemēram, ja tiek ziņots par kļūdu kodā, kas parādās pēc noteikta perioda, var atgriezties pie iepriekšējās versijas, lai apskatītos, kādas tieši izmaiņas tika veiktas tajā laika periodā.

Pamatā vajag saprast, ka šādi varam iegūt kodu no versiju kontroles sistēmas, lai nebūtu vairākas koda versijas, kuras tiktu glabātas uz viena datora, kurām nevarētu piekļūt no ārpuses (piemēram, cits programmētājs vai projekta vadītājs), kā arī, lai nodrošinātos un datiem būtu rezerves kopija.

Tātad kādā veidā var izmantot versiju kontroli? Kādi ir versiju kontroles darbības pamatprincipi, ko drīkst darīt un ko nē?

  1. Atjaunojot kodu, ielādē to repozitorijā tikai tajā gadījumā, ja tas strādā. To var apskatīt arī sekojošā veidā – piemēram, kolēģi var atbraukt nākamajā dienā uz darbu, lai saprastu, ka cits programmētājs ir ielādējis jaunu versiju, kura strādā ar kļūdām. Tādā veidā viņi centīsies palaist projektu, bet to palaist nevarēs. To var dēvēt arī par slikto praksi – tā darīt nav vēlams. Kodam ir jāstrādā, to var pārbaudīt, iepriekš kodu patestējot.
  2. Pārbaudi failus pirms to ielādēšanas. Ir nepieciešams ielādēt tikai koda failus un layout failus (.sln or .proj visual studio programmēšanas videi vai .pro files qt). Attiecīgi faili, kas ģenerējas kompilācijas laikā paliek tikai uz mūsu datora.
  3. Ielādē serverī kodu pēc iespējas biežāk. Ir nepieciešams atjaunot kodu un pārbaudīt to pēc iespējas biežāk. Ir ieteicams to darīt pēc katru jaunu izmaiņu implementēšanas. Gadījumā, ja programmētājam būs nepieciešams atgriezties pie iepriekšējās versijas, tad būs jāmaina mazākās lietas kodā nevis lielu koda daļu (piemēram, 3 vai 5 implementētās koda daļas). Ir redzēts, ka programmētāji atjauno serverī programmas kodu reizi mēnesī, tomēr šādu praksi labāk nepiekopt. Tas radīs problēmas pēc tam.
  4. Neielādē versiju kontrolē pus-pabeigtu darbu.
  5. Versiju kontroles sistēmās ir 3 pamatlietas – branches, tags un trunk. Trunk sadaļā mēs turam pašreizējo koda versiju, kuru izmantos arī citi cilveki. Tags sadaļā mēs saglabājam kādu konkrētu programmas versiju, lai vienmēr būtu pieejamas visas izlaistās versijas. Branches sadaļā mēs turam kodu, kas ir līdzīgs pamata programmai, bet ir atšķirības, kuras nevar likt iekšā galvenajā programmā.
  6. Raksti komentārus katrām izmaiņām. Ir nepieciešams komentēt katru izmaiņu, jauninājumu. Tas ir nepieciešams, jo programmētājs var aizmirst, ko viņš ir darījis katru izmaiņu veikšanas laikā. Šādu situāciju var iztēloties arī citādāk – piemēram, ja projektu pārņems kāds cits cilvēks, kuram nebūs ne jausmas, kas tur notiek. Tāpēc ir jākomentē, jākomentē, jākomentē.

Un tas arī viss. Ir vērtīgi atcerēties izmantot versiju kontroli un versiju kontroles darbības principus.

* Autors – Rīgas Programmēšanas skolas pasniedzējs Mārtiņš Leitarts.

* Autora citus rakstus var lasīt: http://techbear.org/ 

KAS NOTIEK MŪSU SKOLĀ?

Reģistrācija
Kontakti