Git
Chapters ▾ 2nd Edition

1.1 Začetek - O nadzoru različic

To poglavje bo namenjeno začetnim korakom z Gitom. Začeli bomo razlago ozadja o orodjih za nadzor različic, nato se premaknili na to, kako pognati Git na vašem sistemu in na koncu, kako ga nastaviti, da začnete delo. Po zaključku tega poglavja bi morali razumeti, čemu je Git na voljo, zakaj bi ga morali uporabljati in morali bi biti pripravljeni za delo z njim.

O nadzoru različic

Kaj je »nadzor različic« in zakaj bi morali za to skrbeti? Nadzor različic je sistem, ki s časom zapisuje spremembe v datoteko ali skupek datotek, da lahko kasneje prikličete določeno različico. Za primere v tej knjigi boste uporabljali izvorno kodo programske opreme kot datoteke, ki bodo nadzirane v različicah, vendar v resnici lahko to naredite s skoraj katerimkoli tipom datotek na računalniku.

Če ste grafični ali spletni oblikovalec in želite slediti vsaki različici slike ali postavitve (kar nadvse verjetno želite), je sistem nadzora različic (VCS) zelo modra odločitev za uporabo. Omogoča vam povrniti datoteke v prejšnje stanje, povrniti celoten projekt v prejšnje stanje, primerjati spremembe s časom, pogledati, kdo je nazadnje kaj spremenil, kar bi lahko povzročalo težavo, kdo in kdaj je uvedel težavo ter še več. Uporaba VCS tudi v splošnem pomeni, da če kaj zamočite ali izgubite datoteke, lahko enostavno stvari povrnete. Poleg tega dobite vse to za zelo majhno ceno.

Lokalni sistemi nadzora različic

Za veliko ljudi je metoda izbire nadzora različic kopiranje datotek v drug direktorij (mogoče časovno označen direktorij, če so pametni). Ta pristop je zelo pogost, ker je tako enostaven, vendar je tudi zelo dovzeten za napake. Enostavno je pozabiti, v katerem direktoriju ste in po nesreči pišete v napačno datoteko ali prepišete datoteke, ki jih niste želeli.

Za spoprijemanje s to težavo so programerji že davno nazaj razvili lokalne VCS-je, ki so imeli enostavno podatkovno bazo, ki je shranjevala vse spremembe na datotekah pod nadzorom različic.

Diagram lokalnega nadzora različic
Slika 1. Diagram lokalnega nadzora različic

Eno priljubljenejših orodij VCS je bil sistem, imenovan RCS, ki je še danes deljen na mnogih računalnikih. RCS deluje tako, da obdrži skupke popravkov (to so razlike med datotekami) v posebni obliki na disku; nato pa lahko ponovno ustvari, kako je bila katerakoli datoteka videti v kateremkoli času z dodajanjem vseh popravkov.

Centralizirani sistemi nadzora različic

Naslednja glavna težava, na katero ljudje naletijo, je, da morajo sodelovati z razvijalci na drugih sistemih. Za spoprijemanje s tem problemom so bili razviti centralizirani sistemi nadzora različic (CVCS-ji). Ti sistemi (kot so CVS, Subversion in Perforce) imajo en strežnik, ki vsebuje vse različice datotek in več odjemalcev, ki izvlečejo datoteke iz tega osrednjega mesta. Mnoga leta je bil to standard za nadzor različic.

Diagram centraliziranega nadzora različic
Slika 2. Diagram centraliziranega nadzora različic

Ta namestitev ponuja mnoge prednosti, posebej preko lokalnih VCS-jev. Na primer, vsakdo ve do določene mere, kaj kdorkoli drug na določenem projektu dela. Skrbniki sistema imajo drobno zrnat nadzor nad tem, kdo lahko kaj naredi, in za administracijo CVCS-jev je to precej enostavnejše, kot pa se spoprijemati z lokalnimi podatkovnimi bazami na vsakem odjemalcu.

Vendar ta namestitev ima tudi nekatere resne slabosti. Najbolj očitna je odpoved ene same točke, ki jo centralizirani strežnik predstavlja. Če ta strežnik odpove za eno uro, potem med to uro nihče ne more sodelovati ali shraniti sprememb različic na karkoli, na čemer delajo. Če se trdi disk, na katerem je osrednja podatkovna baza, poškoduje in ustrezne varnostne kopije niso bile ohranjene, boste izgubili absolutno vse — celotno zgodovino projekta razen samega posnetka, ki ga imajo uporabniki na svojih lokalnih napravah. Lokalni sistemi VCS trpijo za enakim problemom — kadarkoli imate celotno zgodovino projekta na enem mestu, tvegate, da boste izgubili vse.

Porazdeljeni sistemi nadzora različic

To je mesto, kjer pristopijo porazdeljeni sistemi nadzora različic (DVCS-ji). V DVCS (kot je Git, Mercurial, ali Darcs) odjemalci ne izvlečejo samo zadnjega posnetka datotek: v celoti kopirajo repozitorij skupaj s celotno zgodovino. V primeru, da katerikoli strežnik odpove in ti sistemi sodelujejo preko tega strežnika, se lahko kopira repozitorij katerega koli odjemalca na strežnik ter se povrne. Vsak klon je resnično celotna varnostna kopija vseh podatkov.

Diagram porazdeljenega nadzora različic
Slika 3. Diagram porazdeljenega nadzora različic

Poleg tega se mnogo teh sistemov precej dobro spoprijema z mnogimi oddaljenimi repozitoriji, na katerih lahko delajo, tako da lahko sodelujete z različnimi skupinami ljudi na različne načine istočasno znotraj istega projekta. To vam omogoča postaviti več tipov poteka dela, ki na centraliziranih sistemih, kakršni so hierarhični modeli, niso možni.

scroll-to-top