Version Control System


Matija Marohnić

Version Control System

Revision Control System

Source Control Management

Što je VCS?


Sustav za upravljanje promjenama u projektu.

Npr.


5 ljudi surađuje na istom znanstvenom članku "Zašto je zijevanje zarazno?"

  • zijevanje.doc
  • zijevanje_1.doc
  • zijevanje_verzija3.docx
  • zijevanje_zadnja.doc
  • zijevanje_zadnja2.doc
  • zijevanje_sad_fakat_zadnja.doc

Razlike između pojedinih verzija?

Zašto VCS?


  • verzioniranje proizvoda
  • suradnja na istom projektu
  • automatski backup
  • sustavan pristup
  • jednostavan deploy
  • opis, datum i autor promijene
  • lakša detekcija bugova
  • pregled prošlosti razvoja
  • automatski changelog
  • fallback u slučaju bugova
  • itd.

Command-line interface (CLI)


Interakcija sa računalom putem naredbi. Suprotno od GUI-a (graphical user interface), gdje se interakcija odvija putem grafičkog sučelja. 

  • Terminal (UNIX)
  • cmd (Windows)



Najveće stvari događale su se upravo u CLI-u, jer je iznimno moćan. Većina VCS-ova koristi se upravo na taj način.

Diff(erence)


"Igrao sam Portal 2 u multiplayer i bilo je baš fora."
"Igrao sam Portal 2 u multiplayer i bilo je baš zabavno."

Line diff

- Igrao sam Portal 2 u multiplayer i bilo je baš fora.
+ Igrao sam Portal 2 u multiplayer i bilo je baš zabavno.

Word diff
Igrao sam Portal 2 u multiplayer i bilo je baš [-fora-]{+zabavno+}.

DVCS


DVCS = Distributed Version Control System

Ne postoji centralno mjesto s kojeg se povlači kod, nego je moguće imati više grana, odnosno kopija projekata za rad na različitim značajkama.

Poznatiji VCS-ovi


  • CVS
  • SVN
  • Mercurial
  • Bazaar
  • monotone
  • Perforce
  • LayerVault
  • Git

CVS


CVS = Concurrent Versioning System

Djed svih VCS-ova (1986.)

Postao je standardan i dostupan svugdje, iako nema toliko mogućnosti kao Git i ostali VCS-ovi.

Iako je prilično star, mnogi ga dizajneri i developeri još i danas koriste za backup i dijeljenje datoteka.


Mnogi IDE-ovi koriste CVS:

  • Xcode (Mac)
  • Eclipse
  • NetBeans
  • Emacs

SVN


SVN = Subversion

Najpopularniji VCS prije Git-a. Mnogi open-source projekti koriste SVN zato što ga koriste SourceForge, Apache, Python, Ruby i mnogi drugi.

Npr. Google Code koristi isključivo SVN.

Mercurial


Vrlo brz DVCS dizajniran za veće projekte, obično ga ne koriste neovisni dizajneri i developeri.

Mercurial ~ Relating to or having characteristics (eloquence, swiftness, cleverness) attributed to the god Mercury.

Iako je vrlo brz i skalabilan, isto tako je puno jednostavniji od Gita, zbog čega je privalačan developerima. Ali nema toliko funkcija, a te funkcije su slične CVS-u.


Vim, jedan od najpopularnijih text editora, se
razvija pomoću Mercuriala.

Bazaar


DVCS koji sam sebe naziva
"Version control for human beings."

Pruža mnogo različitih tipova workflowa – solo, centraliziran i decentraliziran, s mnogo varijacija između.

Jedna od glavnih značajki Bazaara je detaljna kontrola nad setupom, moguće je prilagoditi ga gotovo bilo kojoj situaciji.

monotone


Minimalan DVCS.

Dok se ostali VCS-ovi fokusiraju na performance, Monotone se više fokusira na integritet.

Relativno je lagan za naučiti ako je korisnik upoznat sa CVS sustavima, a moguće je i unijeti prethodne CVS sustave.

Nije toliko popularan kao ostali VCS-ovi.

Perforce


Fleksibilan, skalabilan i siguran VCS za poduzeća.
Može upravljati mnogim tipovima podataka
i podržava najnovije workflowe.

LayerVault


Komercijalni VCS za dizajnere. Podržava sinkronizaciju preko sebe i Dropboxa, ima neograničeni prostor, pa tako i neograničenu povijest projekata. Pruža razne pomoćne alate kao što su ravnalo, color picker i sl.

Podržava formate kao što su .AI, .PSD, .PDF itd.


Git


Najpopularniji DVCS, napravio ga je kreator Linux kernela, Linus Torvalds.

Dobar je i za velike i za male projekte jer je vrlo brz i efikasan. Nadmašuje ostale VCS-ove zbog značajki kao što je npr. jeftino grananje projekta.

Na serveru se može instalirati podrška za Git repozitorije, dakle deploy može biti vrlo jednostavan.


Koriste ga mnoge velike firme i organizacije kao što su Google, Facebook, Micro$oft, Twitter, LinkedIn, Netflix, Android...



GitHub


Web aplikacija koja hosta Git repozitorije, pomoću koje je moguća suradnja s drugima.

Alternative


  • BitBucket
  • GitLab
  • Gitorious
  • Google Code
  • SourceForge
  • Codebase

Problemi kod VCS-a

Veličina projekta


Kada se u projektu nalaze veće datoteke
 on nakon nekog vremena može postati fizički vrlo velik.

Konflikti


Oni nastaju kada VCS ne može sam spojiti promijene, pa javi da postoji konflikt, koji se zatim treba ručno razriješiti.

To se događa obično kada više osoba radi izmjene:

  • na istoj liniji
  • u blizini iste linije
  • u datoteci koju je druga osoba izbrisala.

Broj potencijalnih konflikata može se smanjiti sustavnim i postupnim bilježenjem promijena.

Razgranatost projekta


Može se dogoditi da projekt postane previše razgranat zbog nedovoljno dobre organizacije. U tom slučaju treba težiti riješavanju i stapanju tih grana s glavnom granom.

Literatura


    Made with Slides.com