5 Rad na postojećim projektima

U ovom poglavlju će biti opisano račvanje projekata, kao i sam GitHub proces rada. Osim osnovnih zahteva za povlačenje, biće prikazani i neki napredniji zahtevi za povlačenje i reference.

Račvanje projekata

Kada korisnik želi da da doprinos postojećem projektu za koji nema dozvolu da ga menja, uvek ima opciju „račvanja” (eng. fork). GitHub će napraviti kopiju projekta koja se dodeljuje korisniku i projekat je onda moguće menjati. Gledano sa ove vremenske distance, termin račvanja je imao negativno značenje jer je opisivao situaciju kada neko projekat otvorenog koda iskoristi stvarajući konkurentski projekat. Na platformi GitHub račvanje podrazumeva isti projekat, ali u korisničkom prostoru imena, što korisniku dozvoljava da javno pravi promene projekta, pa to u suštini predstavlja još otvoreniji i transparentniji doprinos.

Slika 16: Opcija račvanja

Na ovaj način kreatori projekata ne moraju da brinu o dodavanju korisnika kao saradnika da bi im dali dozvolu za menjanje. Korisnici mogu da račvaju projekat, postavljaju na račvu i daju svoj doprinos promenama nazad originalnom repozitorijumu tako što će kreirati zahtev za povlačenjem (eng. Pull Request). Da bi korisnik račvao projekat, treba da poseti stranicu projekta klikom na dugme račvanja. Nakon nekoliko sekundi, biće prebačen na stranicu svog novog projekta, sa svojom sopstvenom kopijom koda, koju dalje može da menja.

Slika 17: Primer račvanja, novi projekat korisnika sa sopstvenom kompijom koda

GitHub proces rada

GitHub je dizajniran prema određenim procesima za saradnju, ali je pre svega fokusiran na zahteve za povlačenjem. Ovaj način rada funkcioniše bilo da je u pitanju saradnja sa dobro uvezanim timom na jednom deljenom repozitorijumu, ili sa globalno distribuiranom kompanijom ili mrežom nepoznatih korisnika koji daju doprinos projektu preko brojnih račvi. Bazira se na tematskim granama.

U opštem slučaju radi na sledeći način.

  1. Račva se projekat.
  2. 2Napravi se tematska grana iz mastera.
  3. Naprave se neki komitovi da se poboljša projekat.
  4. Postavi se nova grana na korisnički GitHub projekat.
  5. Otvara se zahtev za povlačenjem na GitHub servisu.
  6. Diskutuje se i eventulano nastavlja sa komitovanjem.
  7. Vlasnik projekta spoji ili zatvori zahtev za povlačenjem.
  8. Sinhronizuje se ažurirana master grana nazad u svoju račvu.

Na jednom jednostavnom primeru se može prikazati promena projekta otvorenog koda koji je hostovan na GitHub servisu, koristeći navedeni način rada. Takođe, sve ovo se može uraditi i pomoću zvaničnog GitHub CLI alata. Alat se može skinuti za bilo koji operativni sistem.

Primer. Korisnik traži ko ̂d koji hoće da izvršava na svom Arduino programabilnom mikrokontroleru i našao je odličan fajl programa na servisu GitHub na adresi https://github.com/schacon/blink, kao što je prikazano na slici 18.

Slika 18: Program čiji se kod menja

Jedini problem je što je brzina treptanja suviše velika. Korisnik smatra da bi bilo bolje da se kod svake promene stanja čeka tri sekunde umesto jedne. Zato korisnik hoće da unapredi program i pošalje ga nazad na projekat kao predloženu promenu.

Da bi korisnik dobio svoju kopiju projekta, najpre se klikne na dugme račvanja koje je ranije opisano. Ovde je korisničko ime „tonychacon” tako da je korisnička kopija projekta na adresi https://github.com/tonychacon/blink i tu može da se uređuje. Kloniraće se projekat lokalno, napraviti tematska grana, promeniti kod i konačno poslati te promene nazad na GitHub. To se postiže na sledeći način.

  1. Klonira se račva projekta lokalno.
  2. Napravi se opisna tematska grana.
  3. Izmeni se kod.
  4. Proverava se da li je promena dobra.
  5. Komituje se promena na tematsku granu.
  6. Postavlja se nova tematska grana nazad na korisničku GitHub račvu.

Ako se sada korisnik vrati na svoju GitHub granu, vidi se da je GitHub primetio da je korisnik postavio novu tematsku granu i prikazuje se veliko zeleno dugme da se promene objave i otvara se zahtev za povlačenje ka prvobitnom projektu.

Drugi način je da korisnik ode na stranicu grananja (eng. Branches) https://github.com/[korisnik]/[projekat]/branches kako bi alocirao svoju granu i otvorio novi zahtev za povlačenje odatle.

Slika 19: Novi zahtev za povlačenje

Ako se klikne na prikazano zeleno dugme, pojaviće se ekran koji korisnika pita da njegovom zahtevu za povlačenje da naslov i opis. Ovo je veoma korisno, pošto korektan opis pomaže vlasniku prvobitnog projekta da shvati šta korisnik želi da uradi, da li su korisničke promene ispravne i da li će prihvatanje promena poboljšati prvobitni projekat.

Moguće je videti i listu komitova na korisničkoj tematskoj grani koji su „ispred” master grade i razlike svih promena koje će biti napravljene ako vlasnik projekta odluči da spoji ovu granu.

Slika 20: Prikaz izmena
Slika 21: Pisanje komentara

Pominjanja i obaveštenja

Platforma GitHub ima izuzetno efikasan sistem obaveštavanja korisnika. Korisnik je obevešten kada neko račva njegov projekat, kada ga neko spominje u komentaru i slično. Na slikama 22 i 23 prikazane su detaljne mogućnosti podešavanja notifikacija, koje su korisniku na raspolaganju. Većina korisnika isključuje obevešavanja putem mejla, zato što svakako obaveštenja dobijaju na samoj platformi.

Slika 22: Podešavanje notifikacija
Slika 23: Dodatne opcije podešavanja notifikacija
Prethodna lekcija Povratak na početak kursa Sledeća lekcija