
Joseph Goodman
0
3442
504
Kao web programeri, puno vremena radimo na lokalnim razvojnim mjestima, a zatim samo prenosimo sve kad završimo. To je u redu kad ste samo vi i promjene su male, ali kad imate posla s više osoba koje rade na nečemu ili na velikom projektu s puno složenih komponenti, to jednostavno nije izvedivo. Tada se okrećemo nečemu što se zove kontrola verzija.
Danas ću govoriti o softveru za upravljanje verzijama otvorenog koda koji se zove Git. To omogućava više osoba sigurnom radu na istom projektu bez ometanja jedni druge, ali to je i mnogo više od toga.
Zašto koristiti softver za kontrolu verzija?
Prije svega, ime bi ga trebalo odavati. Softver za kontrolu verzija omogućuje vam da imate “verzije” projekta, koje prikazuju promjene koje su unesene u kôd tijekom vremena, i omogućava vam da povučete korak po potrebi i poništite te promjene. Sama ova sposobnost uspoređivanja dviju verzija ili obrnutih promjena čini neprocjenjivom prilikom rada na većim projektima.
Vjerojatno ste to već i sami napravili u nekom trenutku, spremajući kopije projekta na različitim točkama, tako da imate sigurnosnu kopiju. U sustavu kontrole verzija spremale bi se samo promjene - datoteka zakrpa koja se može primijeniti na jednu verziju kako bi bila ista kao i sljedeća verzija. Za jednog programera to je dovoljno.
Ali što ako imate više programera koji rade na projektu? Tada dolazi ideja o centraliziranom poslužitelju za upravljanje verzijama. One su već duže vrijeme standardne po kojima su sve verzije pohranjene na središnjem poslužitelju, a pojedini programeri odjavljuju i prenose promjene na ovaj poslužitelj. Ako ste ikada pogledali povijest uređivanja stranice Wikipedije, dobro ćete znati kako to funkcionira u stvarnom scenariju:
Prednosti sustava poput ovog je u tome što više programera može izvršiti promjene, a svaka promjena tada se može pripisati određenom programeru. S druge strane, činjenica da je sve pohranjeno na udaljenoj bazi podataka znači da se ne mogu mijenjati kada se taj poslužitelj pokvari; a ako se izgubi središnja baza podataka, svaki klijent ima samo trenutnu verziju onoga na čemu je radio.
To nas vodi na Git, i druge tzv distribuirani sustavi za upravljanje verzijama. U tim sustavima klijenti ne samo da provjere trenutnu verziju datoteka i rade na njima - oni zrcale cijelu povijest verzija. Svaki programer uvijek ima potpunu kopiju svega. Središnji poslužitelj se još uvijek koristi, ali ako se najgore dogodi, tada se sve može vratiti s bilo kojeg klijenta koji ima najnovije verzije.
Git posebno djeluje uzimanjem “snimke” datoteka; ako datoteke ostanu nepromijenjene u određenoj verziji, one se jednostavno povezuju s prethodnim datotekama - to održava sve brzo i mršavo.
Možda bi vas moglo zanimati i kada naučite da se Git koristi za upravljanje i razvoj jezgre Linux Linux kernel - osnovni građevni blok na kojem su izgrađeni svi Linux distributeri.
Što je Github?
Iako možete pokrenuti vlastiti Git poslužitelj lokalno, Github je i udaljeni poslužitelj, zajednica programera i grafičko web sučelje za upravljanje vašim Git projektom. Slobodno je koristiti za do 5 javnih spremišta - to jest, kada bilo tko može pogledati ili forkirati vaš kôd - s planovima niskih troškova za privatne projekte. Toplo vam predlažem da se prijavite za besplatan račun kako biste se mogli početi igrati okolo sa vlastitim projektima ili forsirati nekoga drugoga.
Forking & Branching
Ovo su osnovni pojmovi Git iskustva, pa uzmimo trenutak da objasnimo razliku.
Vjerojatno ste čuli djelo “viljuška” kada se bavimo linux distrosima. Ako ste upoznati s aplikacijom za medijski centar Plex, znat ćete da je to izvorno vilica sličnog otvorenog koda Xbox Media Center Aeon Nox 3.5: Lijepa i prilagodljiva tema za XBMC Aeon Nox 3.5: Lijepa i prilagodljiva tema za XBMC Set gore svoj medijski centar točno onako kako vi želite. Aeon Nox 3.5 je najnovija inačica onoga što je možda najbolja tema za XBMC, a rijetka je kombinacija: prelijepa…. To jednostavno znači da su u neko doba prošlosti neki programeri uzeli šifru XBMC-a i odlučili ići svojim putem; to je postao Plex.
To je, naravno, potpuno dopušteno kad je projekt otvorenog koda - možete uzeti kôd i s njim raditi sve što želite. Ako Gite smatrate da su vaše promjene dovoljno dobre da ih možete prebaciti natrag u “ovladati; majstorski” projekta, možete napraviti “zahtjev za povlačenjem” autoru, tražeći od vas da vaše promjene povuku u izvorni projekt. To vam omogućuje da u bilo kojem trenutku imate stotine tisuća programera koji rade na projektu, od kojih nijedan ne mora biti odobren za pristup kodu - oni samo kopiraju kôd, unose promjene i traže da se vrate u master. Naravno, ovisi o vlasniku izvornog projekta, odluči li prihvatiti vaše promjene ili ne.
Podružnica je nešto što se interno vrši na projektu ovlaštenih programera. Omogućuje vam lako odvajanje specifičnih problema ili značajki i rad na njima bez probijanja glavnih datoteka. Jednom kada ste uvjereni da se vaša podružnica bavila problemom, spajate ga natrag u gospodara. U bilo kojem trenutku može postojati onoliko grana koliko želite; oni se ne mešaju jedni s drugima. Također možete spojiti promjene između grana bez dodirivanja master.
Evo sjajnog dijagrama primjera tijeka rada Vincenta Driessena:
Sljedeći put ćemo pogledati kako postaviti primjerak radnog Gita i izvršiti promjene koda unutar grana. Kontrola verzija je ogromna tema. Ovdje sam dao samo najkraći pregled, ali kao programer koji je navikao samo unositi promjene i poništiti ih ako ne rade, cijeli mi je koncept propao u glavu - nadam se da će biti i vaš.
Jeste li iskusni programer sa iskustvom u Gitu? Jeste li tek počeli i mislite da biste željeli ići? Zvuči u komentarima!