Goodbye subversion, Hello git!
Pradėję kartu lipdyti blogosfera.lt, mes su Justinu nutarėm mesti lauk subversion versijų kontrolės sistemą ir išmėginti ką nors naujo. Aš siūliau bazaar, kurį jau buvau spėjęs išmėginti, tačiau Justinas labiau norėjo išmėginti git. Taip ir padarėm.
Kuo blogai subversion? Pati pagrindinė priežastis, dėl kurios aš norėjau atsikratyti šios sitemos, buvo jos centralizuotumas. Naujos versijos išsaugoti neįmanoma neturint interneto ryšio. Yra tekę dėl to ir nesuspėti atlikti darbų, nes naujų pradėti negalėjau, kol seni "nepriduoti" į serverį, taip pat esu ne kartą programavęs traukiniuose, oro uostuose ar dar kur nors be interneto ryšio, be kurio su subversion neįmanoma pasiekti repozitorijos.
Bazaar man patiko, nes pašalino centralizuotumo problemą. Dar galėčiau pasakyt, kad perėjus prie git, susidarė įspūdis, jog bazaar yra be galo lėta sistema, tačiau tai sunku pastebėti pripratus dirbti su nutolusiais subversion serveriais.
O kuo gi ypatinga git? Git kaip ir bazaar yra "distributed" sistema, t.y. visa repozitorijos istorija yra saugoma pačiame kompiuteryje ir visos naujos versijos taip pat saugomos tiesiai į kompiuterį ir tik esant reikalui (pvz. norint dalintis kodu su kitais) duomenys siunčiami kitur. Pirmas privalumas lyginant su bazaar - nežmoniškas greitis. Visos vykdomos operacijos vykdomos įspūdingai greitai ir kiek ilgiau užtrunka tik duomenų siuntimas į serverį ar iš jo, tačiau užtrunka irgi neilgai, nes siunčiami tik pasikeitę duomenys, tad realiai laukti niekad netenka.
Didelis privalumas, kuris subversion vartotojams nėra toks akivaizdus iš pat pradžių - branche'inimas ir megre'inimas, kas pasak likit.lt vadinama šakojimu bei suliejimu. Esu kalbėjęs apie tai ne su vienu kolega programuotoju ir jei kuris nors iš jų šakoja kodą, tai labai minimaliai. Aš pats naudodamas subversion naudojau realiai atskirą šaką stabiliai kodo versijai laikyti, į kurią reguliariai suliedavau naujus pakeitimus iš trunk šakos, bei atskiras šakas skirtingiems projektams. Subversion 1.5 jau turi smarkiai supaprastintą suliejimų sekimo (merge tracking) mechanizmą, todėl situacija pagerėjo, tačiau dar nėra tobula. git buvo kurta su mintimi, kad šakų suliejimas vyks itin dažnai, tad tai atliekama itin greitai ir paprastai.
Verta paminėti, kad git sukūrė ne kas kitas, o pats Linus Torvalds, kuris ieškojo tinkamos versijų sistemos Linux branduolio administravimui, tačiau nieko gero nerado ir sukūrė git. Rekomenduoju pasižiūrėti šią jo kalbą, pristatančią git svečiuose pas google. Jis taip pat labai nemaloniai kalba apie subversion vartotojus ir siūlo jiems tiesiog išeiti, bet jo argumentai man labai suprantami bei pateisinami (subversion skelbiasi esą "cvs done right", bet Linus teigia, kad cvs yra toks blogis, kad padaryti jo teisingai tiesiog neįmanoma).
Norint pradėti naudoti git taip pat rekomenduoju video įrašą, kuriame gana išsamiai apžvelgiama, kaip veikia ir kaip naudoti git. Pats nesužinojau daug naujo, tačiau esu įsitikinęs, kad man tai būtų smarkiai padėję, jei būčiau pačioje pažinties su git pradžioje šį video peržiūrėjęs.
Na ir paskutinis dalykas, kurį dar būtinai noriu paminėti - GitHub. Labai paprasta bei patogi tarnyba kodo publikavimui bei dalinimuisi su kitais. Leidžia klonuoti kitus atviro kodo projektus ir daryt juose pakeitimus, po to siūlyt pakeitimus kodo autoriams ir t.t. Privačių repozitorijų talpinimas šiek tiek kainuoja, tačiau kainos nesikandžioja. Man užtat dabar nebereikia naudoti Trac'o, kuris ant mano silpno serveriuko labai labai lėtai veikė. Tiesa, užduotims (ticketams) reikalingas atskiras įrankis, bet tokių pilna įvairiausių - rekomenduočiau Lighthouseapp arba Basecamp.
Sukurta: 2009-02-26 21:33:57 UTC
Žymės:
git, github, subversion
Komentarų: 14
