Git vs. SVN - Over
verdeeld en gecentraliseerd
versiebeheer

Git vs. SVN

Wat is versiebeheer?

Om veranderingen aan te brengen aan documenten of bestanden bestaan er zogenaamde versiebeheersystemen. Deze slaan alle versies van een bestand, die door bewerking zijn ontstaan, met aanduiding van tijdstip en gebruiker in een archief op, zodat eerdere versies van afzonderlijke bestanden altijd kunnen worden opgevraagd of hersteld. Zo kan worden nagegaan welke gebruiker op een bepaald tijdstip veranderingen heeft aangebracht. Het uiteindelijke doel van zo’n systeem is om de gemeenschappelijke toegang van meerdere gebruikers tot deze bestanden te coördineren en om het gelijktijdig creëren van meerdere branches (aftakkingen) mogelijk te maken.

Versiebeheersystemen worden vooral gebruikt bij de ontwikkeling van software, voor kantoortoepassingen en in contentmanagementsystemen. De bekendste versiebeheerprogramma’s zijn Apache Subversion (SVN) en Git. Deze kunnen worden geïnstalleerd op de eigen server of gehuurd worden bij een hostingaanbieder. De bekendste webhostingdienst voor Git-projecten is GitHub, maar ook met STRATO HiDrive kun je een Git-repository aanmaken. Hosting van Subversion wordt bijvoorbeeld door RiouxSVN aangeboden. Diensten als SourceForge hosten zowel Git als SVN.


SVN: de CVS-opvolger van CollabNet

Begin 2000 begon Collabnet met de ontwikkeling van de vrije software Subversion en ongeveer vier jaar later kwam de eerste versie uit. Daarmee werd SVN de opvolger van het inmiddels in onbruik geraakte CVS (Concurrent Versions System). In 2009 is het project verplaatst naar de Apache Software Foundation, waardoor het de huidige naam Apache Subversion kreeg.

SVN grijpt terug op een centraal systeem voor versiebeheer. Dat betekent dat er een centrale opslagplaats (repository) is waar alle gebruikers data uit kunnen halen. Omdat gemaakte veranderingen niet met elkaar kunnen worden samengevoegd, kunnen twee gebruikers niet gelijktijdig dezelfde bestanden bewerken. Daarom kan de gebruiker die als eerste een bestand ophaalt ermee werken, terwijl anderen gedurende die tijd een ‘alleen lezen’-document te zien krijgen. Kenmerkend voor Apache Subversion is bovendien dat willekeurige subpaden onafhankelijk van de rest van de boomstructuur te downloaden en te bewerken zijn. Daardoor kunnen aan diverse gebruikers verschillende lees- en schrijfrechten voor alle paden worden toegewezen. Daarnaast onderscheidt Subversion zich door ook mappen die leeg of verplaatst zijn en mappen die een andere naam hebben gekregen probleemloos op te slaan; zonder verlies van hun historie.


Git: de noodoplossing van de Linuxkernel-ontwikkelaars

Linux-ontwikkelaar Linus Thorvalds begon in april 2005 – min of meer noodgedwongen – met de ontwikkeling van een nieuwe software voor versiebeheer. De reden: door een verandering van de licentie van het tot dan toe gebruikte BitKeeper-systeem raakten de Linuxkernel-ontwikkelaars hun gratis toegang kwijt. Het nieuwe systeem moest dezelfde werking hebben als BitKeeper, beveiligd zijn tegen onbedoeld en moedwillig doorgevoerde veranderingen van de data en bovendien zeer efficiënt zijn. Al na enkele dagen presenteerde Thorvalds de eerste versie van Git.

Achter Git schuilt een verdeeld versiebeheersysteem. Er bestaat weliswaar een centrale repository waarin alle veranderingen samenkomen, maar gebruikers downloaden ieder een eigen werkkopie. Daardoor hebben ze de gehele repository, inclusief de historie, lokaal beschikbaar en zijn ze niet de hele tijd afhankelijk van een internetverbinding. Bovendien worden de veranderingen zeer snel in de hoofd-repository opgeslagen. Daarom heeft Git geen lock-systeem; elke gebruiker maakt zijn eigen branches, die dan in de hoofd-repository worden geüpload. Elke gebruiker kan ook standaard in alle mappen lezen en schrijven (wanneer er verschillende bevoegdheden zijn, moeten er aparte hoofdmappen worden aangemaakt). Elke werkkopie is een zelfstandige back-up van de hoofdmap, wat handig is als deze kwijtraakt of beschadigd wordt. Git slaat alleen de inhoud van de mappen op, terwijl lege mappen automatisch worden verwijderd.


SVN vs. Git; een vergelijking

Wat is een betere keuze; SVN of Git? Een eenduidig antwoord op deze vraag is niet te geven. Het hangt ervan af welk versiebeheersysteem het meest geschikt is voor jouw doel. Git en SVN verschillen wat betreft structuur en de daaruit voortkomende werking. De volgende tabel vat de belangrijkste verschillen tussen SVN en git voor je samen:

SVN Git
Versiebeheer centraal verdeeld
Repository een centrale repository waarin werkkopieën worden gemaakt lokale repository-kopieën waarin wordt gewerkt
Toegangsbevoegdheid per pad voor alle mappen
Volgen van veranderingen slaat bestanden op slaat inhoud op
Historie van veranderingen alleen in repository volledig; werkkopieën hebben alleen de nieuwste versie repository en werkkopieën hebben de volledige historie
Internetverbinding bij elke toegang alleen noodzakelijk voor het synchroniseren

De voordelen van Git en die van Subversion:

Kies voor Git als je:

  • niet steeds afhankelijk wilt zijn van een internetverbinding, zodat je overal aan je project kunt werken.
  • beschermd wilt zijn tegen de gevolgen van uitval of verlies van de hoofd-repository.
  • geen lees- en schrijfbevoegdheden voor speciale mappen nodig hebt (deze kunnen met wat extra moeite ook met Git worden ingesteld).
  • waarde hecht aan een zeer snelle overdracht van de veranderingen.

Subversion is de beste keus als je:

Wanneer deze opsomming van features geen uitsluitsel geeft, is het raadzaam om zowel Git als SVN uit te proberen. In beide gevallen kun je vertrouwen op de ondersteuning van een grote community, eersteklas hostingaanbieders en professionele support.

  • Gecertificeerde veiligheid

    Gecertificeerde veiligheid
  • Beste hostingbedrijf

    Beste hostingbedrijf
  • MKB Best Choice

    MKB Best Choice
  • Professionele support

    Professionele support
  • Hosted in Germany

    Hosted in Germany