Distribuerade versionshanteringssystem (GIT) vs Centrala versionshanteringssystem (SVN)

allVCS

Versionshantering är alltid bra och enligt mig ett måste när man utvecklar. VCS har länge handlat om att från ett gemensamt spår dela kod och “commit’a” sina ändringar, så kallade centraliserade VCS.

Några begrepp att få koll på:
DVCS vs CVCS
Distributed Version Control System (GIT, Mercurial)
Centralized Version Control System (SVN, CVS, CC)


Sue lägger till soup, Joe fyller på med juice och sist lägger Eve på med eggs. Sue måste göra sin commit innan joe för att han ska kunna se den och joe måste vara före Eve. Man skulle kunna lösa detta genom att göra egna brancher från main för att testa de olika tilläggen, men detta kan lätt bli komplicerat när man sedan ska merge’a ihop allt.

Nu har nya arkitekturer av VCS börjat ta över, arkitekturer där man har en egen klon av all historik av filerna lokalt. Dessa arkitekturer brukar gemensamt kallas Distributed VCS.

En jämförelse mellan SVN (CVCS) och GIT (DVCS).
Fördelar mellan systemen.
Subversion (CVCS)

  • En central repo-kärna, Dess arkitektur tvingar en till att ha en central repository, detta gör det enkelt för användarna att veta att denna kod är den senaste.
  • GUI, subversion har fler program med bra GUI för versionshanteringen, samt att det finns plugins till de flesta populära IDE
  • Användarrättigheter, Eftersom det finne en central repo så är det enkelt att sätta skriv och läsrättigheter för användare på filer i repot.
  • Delvis checkout, Med subversion kan man checka ut en del av repot och tvingas inte checka ut hela.

GIT ((DVCS)

  • Distribuerade arkitekturen, vilket gör det enkelt att dela ändringar med varandra istället för att lägga allt på en och samma centrala repo
  • Snabb hantering, eftersom alla har en kopia av hela repot och all historik så görs kommandon lokalt vilket gör att de går extrem fort.
  • Många backuper, pågrund av den distribuerade arkitekturen så har alla användare av repot minst en kopia av repot. Detta betyder att i har minst lika många backuper som användare. Det är inte säkert att alla har den absolut senaste koden, men eftersom DVCS uppmuntrar att göra små commits och att branching och merging är så enkelt, så tenderar detta arbetsätt resultera i väldigt små skillnader mellan användarnas repos.
  • Användarrättigheter, eftersom du till skillnad mot SVN inte kan sätta skriv och läsrättigheter i repot mot vissa filer utan att alla har alla filer lokalt så kan man istället fritt välja när du vill merga och från vem, vilket gör att man har bra kontroll på från vem och vilka ändringar man vill merga in till sin kod.
  • Branch hantering, att skapa brancher och merga dem är grundkonceptet i DVCS arbetet, och detta gör GIT verkligen bra.
    GIT håller koll på alla branch och merge händelser, vem gjorde merge’n och vilka brancher och revisioner som merge’ades. Uppgifter på vem som gjort ändringar på en branch bibehålls även fast en annan användare gjorde mergen till skillnad mot SVN där detta ändras till den som gort mergen.

När det gäller storleken på repositoryt så är GIT’s verkligen små i jämförelse mot SVN.
Detta beror på att SVN alltid sparar varje fil 2 ggr, en kopia som du arbetar emot och en som sparas i .svn mappen för att hålla koll på diff’s osv.
GIT har bara en liten indexfil som innehåller ca 100 bytes data per fil.
Om man kollar på Mozilla repository’t så är SVN repot ungefär 12 GiB (fsfs backend), där 240000 filer i en mapp för de 240000 commits gjorda under de 10 års projekthistoria (detta ändrades i SVN 1.5 där varje 1000 revision blir sparad i en annan mapp)
Exakt samma historik i GIT var 2 filer på 420 MiB, 30 ggr mindre än i SVN.
Detta betyder att en full GIT klon är ofta mindre än en full SVN checkout.

Några tjänster som använder sig av DVCS
Webbfeeden beskrev tjänsten i artikeln: Distribuerad Versionshantering med Bitbucket
http://bitbucket.org/
http://gitorious.org/
https://github.com/

GIT’s grundare är Linus Torvalds, se gärna hans presentation av GIT.

källor:
https://git.wiki.kernel.org/index.php/GitSvnComparison
http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/

Taggar: , , , ,
Kategoier: Verktyg, Versionshantering, Webbutveckling

En kommentar

Anonymous skrev    

[...] [...]

Postad 2011-07-19

Lägg till din kommentar


Namn *

Email *

Webbsida

Din kommentar