Nešto malo o Git-u
×

Git je besplatan open source sistem kontrole verzija osmišljen da rukovanje malim ili velikim projektima sa fokusom na brzinu i efikasnost. Primarno se koristi za verzionisanje koda pri razvoju softvera, ali se može koristiti za praćenje promijena u bilo kojim fajlovima. To je distribuirani sistem kontrole verzija čija je glavna prednost brzina, integritet podataka, i podrška za distribuirane, nelinearne poslove.

Sta je Git

Ono što izdvaja Git od ostalih rešenja je to da ima i distribuirani sistem kontrole verzija, što znači da svaki korisnik ima kompletnu kopiju podataka iz repozitorijuma smještenu lokalno na svojoj mašini. Ovo donosi nekoliko prednosti:

  • Sve je lokalno, pa možete raditi offline
  • Niste zavisni od jedne tačke ili centralnog servera koji se može srušiti i uništiti vaš projekat
  • Zbog toga što ne morate da komunicirate sa centralnim serverom, procesi se odvijaju mnogo brže.

Šta je verzionisanje koda?

Verzionisanje, odnosno snimanje koda u centralni repozitorijum u kojem se bilježi svaka promjena kroz istoriju, jedna je od opšteprihvaćenih dobrih praksi u razvoju softvera svih vrsta i namjena.

Izvorni kod je centralni dio svake aplikacije. lzgubite li popis vaših zahtjeva ili rezultate testiranja, još uvijek ćete imati projekat koji razvijate. Možda nećete najbolje moći upravljati razvojem svoje aplikacije, ali bar nećete izgubiti ono što je do tada napravljeno. Gubitkom izvornog koda izgubili ste temelje vašeg projekta.

Nema koda, nema aplikacije! Zato je opravdano reći da je verzionisanje koda temelj i najčešće prvi korak u stvaranju dobro organizovnog razvojnog projekta.

Koncept se sastoji u sledećem: postoji jedan glavni repozitorijum za sve fajlove projekta.  Članovi tima proveravaju fajlove, rade izmjene i onda ih ažuriraju (commit). Version Control System (VCS) automatski bilježi ko je uradio izmene na fajlovima, kada su oni izmijenjeni i šta je novo u njima.

Sistem takođe traži od nas da pišemo male bilješke o izmjenema, tako da svako ko radi na projektu zna šta je urađeno i zbog čega. Svaki fajl takođe posjeduje i istoriju revizija tako da se u svakom trenutku možete vratiti na prethodnu verziju ukoliko nešto krene loše.

Bekapovanje fajlova je svakako jedna od najkorisnijih stvari koju možete uraditi i sprečiti gubitak vaših radova.

Grananje!

Grananje (branching) te povezivanje grana (merging) jedan je od najbitnijih funkcija sistema za verzionisanje. Grananje je postupak razdvajanja jednog stabla koda u dva odvojena stabla sa istim korijenom.

Zamislimo sljedeći scenario: razvijate aplikaciju čija prva verzija odlazi korisniku, a istovremeno nastavljate razvoj na novoj verziji koja će u jednom trenutku u budućnosti biti isporučena. Tokom razvoja te verzije zatražena je hitna promjena ili ispravka u aplikaciji koja je u produkciji, odnosno kod korisnika.

Kako će razvojni tim ispraviti grešku na isporučenoj verziji? Vjerovatno izvorni kod isporučene verzije negdje postoji i moguće ga je naći te na njemu ugraditi željenu prepravku.

Prepravku koju smo napravili na isporučenoj verziji, potrebno je napraviti i na verziji u razvoju. Korišćenjem branchinga opisani postupak značajno se pojednostavnjuje. Svaka isporučena verzija jedna je grana koda te se promjene na određenoj verziji svode na promjene pripadajućih grana.

Git verzionisanje koda

Ako je potrebno promjenu nakon toga prenijeti iz jedne grane u drugu, to se radi postupkom spajanja (merging).

Merging verzija omogućava da gotovo jednim klikom miša prenesete sve željene promjene iz jedne grane u drugu, a da se pri tom sistem brine o konzistentnosti koda i rješava sve eventualne konflikte koji prilikom tog spajanja mogu nastati.

Paralelni rad na različitim verzijama aplikacije nije jedini razlog korištenja branchinga. Na većim projektima vrlo je čest pojam "feature branch". To je odvojena grana koda na kojoj se paralelno i nezavisno od ostatka projekta razvija jedna, najčešće relativno velika, osobina aplikacije.

Takva osobina odvaja se u posebnu granu kako zbog svoje kompleksnosti ne bi narušila integritet ostatka koda. Ponekad se za razvoj takve osobine formira i posebna radna grupa koja odvojeno od ostatka tima radi na toj osobini. Takve odvojene grupe nazivamo "feture crew".

Grananje se ne mora zaustaviti samo na jednom nivou i po potrebi može se hijerarhijski nadovezivati.

Koliko grana će imati pojedini projekat, zavisi o stvarnim potrebama. Svaka grana donosi dodatnu kompleksnost u radu i treba ih kreirati samo onda kada je to opravdano. Prevelikom količinom grana vrijeme potrebno za održavanje promjena među njima može biti veći gubitak od eventualnog benefita koji smo grananjem dobili.

Blog
limun.co © 2018 | Sva prava zadrzana