Versijų kontrolės sistemos ir kodėl jums jų reikia

Kartais tenka nusistebėti, kaip kai kurie programuotojai tvarkosi su savo kodu. Nei lokalių, nei nutolusių kopijų nėra, viskas laikoma ten, kur publikuojamas serveris. Netgi kodas, pasitaiko, redaguojamas būtent ten.

Į lietuvišką Google įrašius „versijų kontrolės sistema“ pirmosios nuorodos: Vikipedija, kuri tikrai neįtikina, kodėl to reikia, ir FWD.lt straipsnis, kur versijų kontrolės sistema (VCS, VKS, RCS, SCM - trumpinkite kaip norite) sumaišyta su paslaugų tiekėju... Na, pasitaiko ir keletas teisingų nuorodų (jos - įrašo pabaigoje).

KPŠ ta VCS?

Paprastai tariant, programa, kurios dėka galite tvarkyti savo kodą patogiau. Procesas gan paprastas, tačiau protingas: parašę dalį kodo (dažniausiai kažką viena tema ir reikšmingo, pvz. naują funkcionalumą ar tam tikros klaidos pataisymą), sukuriate naują pakeitimų sąrašą (dažniausiai vadinamą commit) (tikiuosi pasirinkau teisingą vertalą). Jam suteikiamas unikalus ID ir commit'as tampa lyg kodo versijos atžyma - pasižiūrėjus istoriją aiškiai matyti, kada, kas ir ką (pagal commit aprašymą) pridėjo (ar pašalino :) ).

Kodėl?

Versijavimas. Vien iš šių programų bendro pavadinimo galima numanyti apie šią paskirtį Ką darote, jei norite padaryti pakeitimų kode, tačiau bijote kažko pridirbti ir norite turėti veikiančią, stabilią kopiją? failas.old ir failas.new? Gal dar failas.2011.09.10? :) Yra geresnis variantas! Su VCS visi pakeitimai aiškiai matysis palyginus commit'us. Taip pat bet kada galėsite grįžti prie senesniojo, nes senas kodas niekur nedings.

Darbas komandoje. Šiuo metu dirbu prie projekto kartu su Simonu ir tikrai neįsivaizduoju, kaip galėtume atsinaujinti darbinius failus vienas iš kito be VCS. Siuntinėti per skype ar email? O jei dar reikia persiųsti kelis failus, tai tikriausiai prieš siunčiant spausti į archyvą (ir taip vėl turėti kodas.2011.09.10.tar.gz)? Ne! :) Su VCS atlikus commit'ą jį viena komanda patalpiname į bendrą serverį. Su decentralizuotomis VCS galima juos netgi išsiųsti tiesiai vienas kitam, be jokio tarpinio serverio. Kodą pasiimti gali ne vien kitas komandos narys, bet ir, pavyzdžiui, serveris, kuriame veikia pati jūsų programa.

Atvirumas. Būtent tokių VCS repozitorijų tiekėjų, kaip GitHub ar BitBucket puslapiuose šiais laikais vyksta atvirų programų kūrimas. Projektui turint viešą repozitoriją, kiekvienas gali pasidaryti savo projekto šaką (fork) ir, pamodifikavęs, pasiūlyti projekto autoriui priimti pakeitimus.

Kaip pradėti?

Pirmiausiai reiks išsirinkti pačią sistemą. Jų yra įvairių, nuo dar amžiaus pradžioje išleistos Subversion iki naujesnių ir smagesnių Git, Mercurial ar Bazaar.

Jei norėsite kodą laikyti ne vien savo kompiuteryje, bet ir dalintis su kitais, teks pagalvoti, kur talpinti repozitorijas. Jei turite VPS ar dedikuotą serverį - problemos nėra, serveris puikiai pasitarnaus ir šiam reikalui. Tas pats galioja ir jūsų asmeniniam kompiuteriui, jei tik turite išorinį IP adresą.

Kitu atveju gali tekti naudotis tokiomis svetainėmis kaip GitHub (Git sistemai), BitBucket (Mercurial) ar Launchpad (Bazaar). Viską vainikuoja Google Code, palaikanti Subversion, Mercurial ir Git sistemas. Visos šios svetainės leidžia nemokamai kurti viešas kodo repozitorijas, tiesa, norint turėti privačių, kai kurios prašys sumokėti kelis dolerius.

O tada jau tik mokytis, tyrinėti savo pasirinktą sistemą, kadangi gerų dalykėlių būna jose daug daugiau, nei aprašiau - stengiausi paminėti tik pačius pagrindus. Pats, naudodamas Git, skaitinėju nemokamą Pro Git knygą.

Pavėluotas įspėjimas: aš nesu profesionalas, netgi ir pats VCS pradėjau visai neseniai ir rimtai esu bandęs tik Git. Jeigu kur nusišnekėjau - praneškite... :) Šiuo įrašu nebandžiau reklamuoti nei vieno konkretaus produkto, tiesiog norėjau įtikinti, kad VCS sutaupo daug laiko ir jėgų, nes... taip ir yra! :)

Teisingai lietuviškai apie VCS:

If you enjoyed this post, make sure you subscribe to my RSS feed!

2 thoughts on “Versijų kontrolės sistemos ir kodėl jums jų reikia

  1. Bomber

    Neblogas straipsnis, gerą darbą padarei kad parašei intro lietuviškai :) Aš pats pamenu kai pradėjau naudoti VCS, tai iš pradžių buvo kiek sudėtinga įsijausti ir suprasti visus nuansus, bet dabar kažkaip nejaukiai jaučiuosi be VCS :D

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>