Kontrola verzija: Zašto ne možete živjeti bez nje

Ako koristite računalo, vjerojatno ste se suočili s problemom različitih verzija datoteka. Bilo da se radi o tekstualnim datotekama, datotekama podataka ili programskom kodu koje ste napisali, uvijek ćete se suočiti s odlukom želite li spremiti i zamijeniti prethodnu verziju ili spremiti pored prethodne verzije.


Za pojedine programere već je izazov pratiti različite verzije programa, a da ne spominjem sve različite sigurnosne kopije koje možete napraviti.

Sad zamislite da radite kao tim u projektu koji uključuje tekst, multimediju i kodiranje – ukratko, širok niz informacija u radovima.

Zamislite dalje: recimo da svaki podatak ili programsku datoteku radi nekoliko ljudi („istodobnost“) – svaka osoba dodaje, sprema, uređuje i ponovo sprema. Kako će do kraja znati tko je što, kada i zašto učinio i moći pratiti sve te promjene?

Potrebna vam je kontrola verzije (VC).

U ovom ćemo članku pogledati što je kontrola verzija i kako se razvijala tijekom godina dovodeći do najnovije generacije.

Konkretno, razmotrit ćemo Git, sve popularniju aplikaciju za nadzor verzija od ljudi koji su napravili Linux i vidjeti nekoliko primjera kako biste pomoću Gita dobili kontrolu nad svim tim različitim revizijama vaših datoteka..

Primer za VC Jargon

Kontrola verzija ima svoj jezik. Nakon što odredite u kojim se mapama ili grupi datoteka treba pratiti njihove promjene, poznate su mape ili datoteke poznate kao spremište ili repo.

Promjene se automatski prate, ali bilježe se samo kao jedna zbirka radnji, koje se nazivaju počinjenje i bilježe kao skup promjena s jedinstvenim revizijskim brojem. To osigurava da možete pozvati najnoviju verziju datoteke.

Ako želite usporediti dvije revizije (na primjer, ako je greška upala u vaš kôd u nekom trenutku), alat za kontrolu verzija trebao bi vam omogućiti da razlikujete dvije datoteke, što znači da vidite razlike između dvije.

Da biste eksperimentirali s repo-om bez riskiranja problema ili oštećenja, možete stvoriti podružnicu, što znači kopiju repo-a, koju možete paralelno mijenjati. Ako su promjene u grani zadovoljavajuće, tada možete podružnicu spojiti s glavnim repo-om (master-om) ili čak drugom granom.

Kada se spajaju, moderni sustavi kontrole verzija obično su dovoljno pametni da shvate koje promjene treba uključiti iz koje grane ili repo-a, prema povijesti promjena za svaku od njih. Ako se sustav za kontrolu verzija ne može odlučiti, možda ćete morati ručno riješiti sukob.

Evolucija sustava upravljanja verzijama

Alat za kontrolu verzija pojavio se do sada u tri generacije, a svaka je generacija dodala fleksibilnost i mogućnosti za konkurentnost.

Prva generacija

S izvornim sustavima za upravljanje verzijama, iako bi više ljudi moglo raditi na istoj datoteci, oni to ne mogu istovremeno. Datoteka je bila zaključana kako bi spriječila da joj istovremeno pristupi i drugi.

Primjer takvog alata je SCCS (sustav za nadzor izvornog koda) za razvoj softvera od 1972. nadalje. RCS (Revision Control System) stvoren je kao besplatna alternativa SCCS-u i ponudio je brži rad, grane i spajanje (još uvijek samo dozvoljava jednom programeru da radi na datoteci u određeno vrijeme).

Druga generacija

Mnoge kontrole verzija koje su danas u funkciji su u ovoj kategoriji. Moguće su istodobne izmjene datoteka, iako korisnici moraju spojiti trenutne revizije u svom radu prije nego što se mogu obvezati.

CVS (sustav istodobne verzije) je jedna instanca i omogućuje interakciju klijent / poslužitelj uz korištenje spremišta. SVN (ili Apache Subversion u cijelosti) je možda najpopularniji od svih danas korištenih upravljačkih sustava.

SVN se može zamisliti kao redizajn CVN-a s modernim temeljima i rješenjima za bivša CVS ograničenja.

Treća generacija

Poznat i pod nazivom DVCS (Distributed Version Control Systems), s mogućnošću odvajanja operacija spajanja i počinjenja, jedan od najpoznatijih primjera je Git.

Ne postoji više centralizirana baza za datoteke; različite grane drže različite dijelove, što otvara vrata i za rad na revizijama izvan mreže.

Pravi primjer korištenja Gita

Kako izgledaju gore opisane operacije pri korištenju stvarnog sustava kontrole verzija?

Uzmimo Git kao primjer ovdje, koristeći naredbenu liniju Linux. Prvo stvaramo Git spremište za direktorij u kojem se trenutno nalazimo. Koristite naredbu pwd da vidimo gdje smo:

1
2

$ pwd

/ Users / HJ / Desktop / repo / aplikacije

Zatim koristimo naredbu git init da stvorimo spremište (“master” spremište) i vratimo potvrdu iz Gita:

1
2

$ git init

Inicijalizirano prazno Git spremište u /Users/HJ/Desktop/repos/apps/.git

Pretpostavimo da u našu radnu mapu dodamo novu datoteku, main.c. Pomoću naredbe git statusa dat će nam se sljedeće informacije:

1
2
3
4
5
6
7
8
9

$ git status

# Na masteru podružnice
#
# Početno počinjenje
#
# Neotkrivene datoteke:
# (koristiti "git add …" uključiti u ono što će se počiniti)
#
# Main.c

Koristimo git add za praćenje datoteke main.c

1 $ git dodaj main.c

Koristimo git commit s porukom (-m opcija) o tome što radimo da bismo počinili promjene u datoteci main.c.

1 $ git počiniti -m "dodavanje main.c u spremište"

Sada možemo stvoriti granu (npr. “Test”) sa naredbom git grane:

1 $ git ogranak test

Ponovno korištenje naredbe git grana jednostavno popisuje spremišta koja sada imamo:

1
2
3

podružnica $ git

test

* ovladati; majstorski

Konačno, za početak rada u “testnoj” grani na kopiji main.c sada u toj grani, koristimo naredbu git checkout da dobijemo potvrdu da sada radimo u “test” grani.

1
2

$ git test za provjeru

Prebacio se na granu "test"

Da biste se vratili u podružnicu “master”, jednostavno ponovo upotrijebite naredbu git checkout:

1
2

$ git blagajnik majstor

Prebacio se na granu "ovladati; majstorski"

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me