PHPPamokos.lt


10. Darbas su GitHub ir BitBucket

Turiu jums gerų žinių. Iki šiol praeitų pamokų jau pilnai užtenka, kad galėtumėte dirbti su Git. Šiek tiek praktikos su realiais projektais - ir jūs jau galite pritaikyti visas turimas žinias. Likusios pamokos yra labiau papildymas ir gilesnės versijų kontrolės galimybės, bei rečiau naudojamos funkcijos.

Šioje pamokoje susipažinsime su nutolusių repozitorijų saugojimo sistemomis iš arčiau, ir sužinosime, kaip per jas prisidėti prie svetimo open-source projekto.


Trumpai apie Bitbucket

Pradėkime nuo Bitbucket - galite užeiti adresu https://bitbucket.org.

Galite užsiregistruoti, taip pat nemokamai. Iš principo, veikimas bus beveik identiškas, kaip ir GitHub, esminis pagrindinis skirtumas yra kainodara. Paprastam asmeniniam naudojimui abi sistemos yra nemokamos, bet mokestis imamas, pereinant prie rimtesnio naudojimo. Ir už ką būtent mokama - taktikos yra skirtingos.

GitHub jūs mokate už kiekį privačių repozitorijų:

Bitbucket atveju mokate už komandos narių skaičių:
(tik jei jis pasiekia 6 žmones, iki 5 žmonių viskas nemokamai)

Taigi, rinkitės patys, kas jums svarbiau ir ko labiau "bijote" - ar kad jūsų kodą matys visas pasaulis, ar kad repozitorijomis galėtų naudotis tik ribotas skaičius žmonių. Pats savo repozitorijomis pasirinkau Bitbucket - kadangi dirbu su klientų projektais, ir tiesiog negaliu jų viešinti, tai Bitbucket tam puikiai tinka, o po metų naudojimo viršijau ir 10 žmonių komandos skaičių, bet dabar mielai moku 10 dolerių per mėnesį už kokybišką paslaugą.

Kad ir kokią repozitorijų saugojimo sistemą iš šių pasirinksite, atsiminkite kad paties Git komandos jūsų kompiuteryje išlieka identiškos ir niekas nesikeičia. Tad galite net vėliau nesunkiai pereiti iš Bitbucket į Github, perkeldami savo repozitorijas, ir atvirkščiai.


Prisidedame prie "atviro kodo" projekto - fork ir pull request

GitHub sistema plačiai naudojama kaip atviro kodo saugojimo sistema - ten įkelia savo programinį kodą žmonės, kurie nori, kad jiems kas nors kitas padėtų tobulinti projektą. Ir tam GitHub sistemoje viskas padaryta labai patogiai - apie tai dabar ir papasakosiu.

Grįžkime prie mūsų git-kursas repozitorijos - jei pamenate, ji buvo sukurta su specialiai šiam kursui skirtu GitHub vartotoju PHPPamokos. Aš turiu savo asmeninį vartotoją PovilasKorop - ir sakykime, kad aš kaip Povilas noriu padėti šitam projektui ir jį patobulinti. Kadangi repozitorija vieša, galiu ją parsisiųsti su git clone ir po to patobulinti. Bet juk neturiu jokio priėjimo, negaliu pats padaryti git push - kaip tada nusiųsti repozitorijos autoriui mano pasiūlomus pakeitimus?

Visa tai daroma per GitHub puslapį - mes turime sukurti atskirą repozitorijos kopiją, taip vadinamą fork - tada visa repozitorija perkopijuojama iš autoriaus vartotojo į mūsų vartotojo paskyrą. Mano atveju - iš PHPPamokos vartotojo kopijuojama į PovilasKorop vartotoją.

Surandame GitHub paieškoje norimą repozitoriją, ir jos dešinėje viršutinėje pusėje bus nuoroda Fork:

Ir tada rodomas pats "forkinimo" procesas:

Vos po kelių sekundžių procesas turi būti pabaigtas ir jus automatiškai nukreips į jau nukopijuotą repozitoriją, kuri, kaip sakiau, formaliai priklausys jau jums, o ne autoriui.

Pastaba. Toks GitHub kopijavimas yra tik kodo parsisiuntimas, bet jis nesuteikia jums jokių autorinių teisių - teisiškai kodas vis dar priklauso jos autoriui. Tad nepatarčiau "vogti" kodo ir po to pristatinėti viešai kaip savojo, toks "fork" procesas reikalingas labiau padėti autoriui, o ne jam pakenkti.
Na ir ką, dabar padarome kažkokį savo pakeitimą - klonuojame jau mūsų repozitoriją, tam sukursiu specialų katalogą Povilasproject:

Tada paredaguojame failą, pvz index.php ir darome git push, pakeitimai bus išsaugoti mūsų GitHub repozitorijoje (ne autoriaus originalioje), ir GitHub puslapis mums rodys kad turime vienu pakeitimu daugiau nei autorius. Norėdami "pasiūlyti" autoriui savo pakeitimą, spaudžiame Pull Request:

Tada GitHub sistema palygina mūsų repozitoriją su originaliąja ir išskiria skirtumus, taip pat patikrina ar galima įkelti mūsų pakeitimus be jokių kodo konfliktų:

Toliau spaudžiame Create pull request, paredaguojame komentarą jei reikia (svarbiausia kad autrorius jį suprastų!) ir viskas, laukiame atsakymo. Tuo tarpu autorius savo GitHub paskyroje prie tos repozitorijos mato štai ką:

Tada paspaudžia tą nuorodą ir mato mygtuką, kurio paspaudimu gali sukelti jūsų siūlomus pakeitimus į savo repozitoriją, t.y. patvirtinti kad juos priima. Arba galima dar pasinaudoti komentarų galimybe ir aptarti pakeitimus - gal jie ne visai tinka, ar reikia kažkiek patobulinti.

Ką gi, spaudžiame Merge pull request ir rezultate matome štai ką:

Ir repozitorijos istorija tada atrodo štai taip - matome ir kas/kada pasiūlė pakeitimą, ir kada jis buvo priimtas:

Tiek tam kartui apie darbą su GitHub ir atviro kodo projektais, tikrai rekomenduoju kaip patogų ir patikimą įrankį dirbant komandoje.


(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com