Git
Chapters ▾ 2nd Edition

3.4 Grananje u Gitu - Tokovi rada sa grananjem

Tokovi rada sa grananjem

Sada kada znate osnove o granama i njihovom spajanju, šta možete i šta treba da radite sa njima? U ovom odeljku ćemo se pozabaviti nekim najopštijim tokovima rada koje ovakav način grananja u Gitu omogućava, kako biste mogli da odlučite da li biste voleli da takav način rada uključite u svoj lični.

Dugotrajne grane

Pošto Git koristi jednostavan trostruki spoj, spajanje jedne grane u drugu više puta tokom dugog vremenskog perioda generalno nije problem uraditi. Ovo znači da možete da imate nekoliko grana koje su uvek otvorene i koje se koristite za različite etape ciklusa razvića; možete regularno da spajate neke od njih u druge.

Mnogi Git developeri koriste ovakav način rada, odnosno imaju kôd koji je u potpunosti stabilan u master grani i to je verovatno jedini kôd koji se dosad našao u zvaničnim verzijama softvera koji se razvija na projektu. Imaju druge paralelne grane koje se zovu develop i next na kojima rade i gde se testira stabilnost za buduće verzije — tako kôd ne mora uvek da bude stabilan, ali kada dođe u stabilno stanje, može da se spoji sa master granom. Koristi se da bi se sa njim spajale grane koje nemaju dugi životni vek poput one iss53 koju smo obradili ranije; tu se proverava da li su svi problemi rešeni i da li nisu nastali neki novi.

U stvarnosti, ovde se radi o pokazivačima koji kližu duž linije komitova koji se prave. Stabilne grane su niže niz liniju u istoriji komitova, a komitovi koji sadrže kod sa diskutabilnom funkcionalnošću nalaze se pri vrhu.

Linearni pogled na grananje koje se oslanja na tehniku progresivne stabilnosti.
Figure 26. Linearni pogled na grananje koje se oslanja na tehniku progresivne stabilnosti.

U opštem slučaju je jednostavnije razmišljati o njima kao o radnim silosima, gde skupovi komitova maturiraju ka stabilnijem silosu kada se u potpunosti testiraju.

Silos
Figure 27. "Silos" pogled na grananje koje se oslanja na tehniku progresivne stablnosti.

Po uzoru na ovo, mogu se napraviti slični tokovi rada sa više nivoa stabilnosti. Neki veći projekti imaju i granu proposed ili pu (proposed updates) koja ima integrisane grane koje još uvek nisu spremne da se premeste u next ili master. Ideja je da grane predstavljaju razne verzije stabilnosti; kada dosegnu stabilniji nivo, utapaju se u granu na višem nivou. Opet, postojanje više dugotrajnih grana nije neophodno, ali često može da pomogne, pogotovo kada se radi sa veoma velikim ili složenim projektima.

Tematske grane

Tematske grane su, međutim, korisne za projekete bilo koje veličine. Tematska grana je grana kratkog životnog veka koju kreirate i koristite samo za jednu odliku rada. Ovo je nešto što verovatno nikad ranije niste radili sa VCS-om zato što je generalno previše skupo da kreirate i upravljate granama. Ali u Gitu je prirodno da se grane kreiraju, da se radi na njima, da se spoje a da se zatim obrišu nekoliko puta tokom dana.

Videli ste ovo u prehodnom odeljku sa iss53 i hotfix granama koje ste napravili. Odradili ste nekoliko komitova sa njima i obrisali ste ih čim ste ih spojili u glavnu granu. Ova tehnika omogućava da brzo i potpuno menjate kontekst u kome radite — pošto je rad podeljen u silose gde sve promene u jednoj grani imaju veze samo sa tom temom, lakše da je da videti šta se desilo sa kodom tokom kasnijeg pregleda. Promene možete da zadržite tu minutima, danima ili mesecima, i da ih spojite kada budu spremne, bez obzira na redosled kojim su kreirani i kojim je rađeno na njima.

Razmotrite primer gde radite neki posao (na master-u), odgranate se na tiket (iss91), radite na tome neko vreme, odgranate se na još jednu granu gde probate da rešite istu stvar na drugi način (iss91v2), vraćate se na master granu gde radite još neko vreme, a onda pravite granu gde radite neke stvari za koje niste sigurni da su dobra ideja (glupa-ideja). Vaša istorija komitova će izgledati ovako nekako:

Više tematskih grana.
Figure 28. Više tematskih grana

Sada odlučujete da vam se drugo rešenje problema sviđa više (iss91v2), a kada glupa-ideja dopre do vaših saradnika, ispostavlja da se da je ideja zapravo bila genijalna. Odbacujete originalnu iss91 granu (gubite komitove c5 i c6) i spajate druge dve. Istorija sada izgleda ovako:

Istorija nakon spanja grana `glupa-idea` i `iss91v2`.
Figure 29. Istorija nakon spanja grana glupa-idea i iss91v2.

Detaljnije ćemo obraditi razne druge mogućnosti kako se mogu realizovati tokovi rada za Git projekat u Distribuirani Git, tako da obavezno pročitajte i to poglavlje pre nego što se odlučite kakvu ćete šemu grananja da koristite.

Bitno je zapamtiti da su grane potpuno lokalne dok radite sve ovo. Dok se granate i spajate, sve što radite dešava se samo u vašem Git repozitorijumu - ne postoji nikakav vid komunikacije sa serverom.