De waarde van (goed) versiebeheer.
Als je werkzaam bent met een project en wijzingen opslaat in bijvoorbeeld een Word-of Excelbestand, kun je hier een nieuwe naam voor maken. Het project wordt een rits van verzamelde bestanden met elk een eigen nummer; een versienummer. Het beheer kan zo erg ingewikkeld worden omdat je niet altijd het overzicht hebt over wat de meest recente versie is, en bovendien kun je niet goed bijhouden wie waarmee bezig is.
Aan IT-projecten werk je nooit alleen; je werkt in een team op verschillende nodes samen aan het project. Iedereen wil altijd over de meest recente versie van de bestanden beschikken en deze direct kunnen delen met zijn collega’s. Voorheen werden e-mails rondgestuurd met bijlages. De samenwerking was zeer inefficiënt en uitermate gevoelig voor fouten. Als developers bezig zijn met de ontwikkeling van een applicatie of een project opstarten, bewijst een goed versiebeheersysteem snel zijn waarde.
Versiebeheersysteem
Versiebeheer of revisiebeheer is een methode waarbij veranderingen in een bestand of groep van bestanden realtime worden bijgehouden. Het is daardoor steeds inzichtelijk wie welke wijzigingen en doorontwikkelingen heeft gedaan. Op elk moment van de dag kun je de laatste of eerdere versies van het bestand opvragen.
De afgelopen jaren hebben verschillende versiebeheer methoden de revue gepasseerd. Hieronder worden enkele modellen beschreven, ondersteund door afbeeldingen, en worden de nadelen per model besproken.
1. Lokale versiebeheersystemen
Het lokale versiebeheersysteem is een methode waarbij alle bestanden worden opgeslagen in een lokale database (bijvoorbeeld je eigen PC). Deze werkwijze werd veel toegepast omdat het eenvoudig was. Het was echter ook gevoelig voor fouten.
Zo kan het voorkomen dat je niet meer weet in welke map een bestand is opgeslagen. Daarnaast kan het gebeuren dat je per ongeluk over andere bestanden heen kopieert. Een ander nadeel is dat het, doordat bestanden lokaal worden opgeslagen, niet mogelijk is om met twee personen tegelijk aan hetzelfde project of bestand kunt werken.
2. Gecentraliseerde versiebeheersystemen
Het centrale versiebeheersysteem omvat één centrale server die extern is opgeslagen en alle versies van bestanden opslaat. Vanaf deze server kunnen developers met hun eigen computer bestanden downloaden om ermee aan de slag te gaan.
Dit model is makkelijker in gebruik dan het lokale versiebeheersysteem omdat je meerdere beheerders toegang kunt verlenen aan een project. Het is bovendien steeds duidelijk wie waaraan heeft gewerkt.
Een nadeel van het gecentraliseerde versiebeheersysteem is de server; de ‘single point of failure’. Mocht de server plat gaan, dan kan niemand aan het project werken of bijgewerkte versies bewaren. Mocht de server corrupt raken en er zijn geen backups van het project, dan is echt alles verloren. Het lokale versiebeheersysteem kent hetzelfde pijnpunt; als de hele voortgang van het project op één plaats wordt bewaard, bestaat de kans dat alles kwijtraakt.
3. Gedistribueerde versiebeheersystemen
Als reactie op de pijnpunten van de lokale en centrale versiebeheersystemen, is het gedistribueerde versiesysteem ontwikkeld.
Het gedistribueerde versiebeheersysteem maakt het mogelijk om de gehele repository (opslag) te downloaden voor iedere afzonderlijke client (developer). Alle versies van het bestand of project worden bewaard, in plaats van alleen de laatste versie. Mocht een server niet bereikbaar zijn, dan kan de repository van elke client worden opgehaald en hersteld worden. In de afbeelding hieronder kun je zien dat iedere check out als een complete backup functioneert.
Het gedistribueerde versiebeheersysteem maakt het mogelijk om met verschillende developers op allerlei manieren aan hetzelfde project te werken.
Wat is het meest populaire versiebeheersysteem?
Git is veruit de populairste beheertool voor sourcecode en developers maken er volop gebruik van. Git is ontworpen door Linus Torvalds (ontwikkelaar van Linux) uit onvrede over de methode van het centrale versiebeheersysteem.
Met Git kunnen meerdere developers een versie van dezelfde code op hun systeem hebben en bewerken. Performance en security zijn niet langer een issue omdat je steeds de enige bent die in het bestand werkt. De software voert een checksum van alle bestanden uit. Zo komen onbedoelde mutaties in de code automatisch aan het licht, bijvoorbeeld als gevolg van corrupte bestanden.
Het branchen (aftakken) is gemakkelijk en een naamconventie is niet nodig in Git. Als gebruiker kun je zelf bepalen hoe je een nieuwe code-tak noemt. Ook het samenvoegen (mergen) van verschillende bestanden is gemakkelijk. Het effect van Git is een efficiëntere samenwerking en betere code. Het mergen van code maakt dat het gemakkelijk kan worden opgenomen in het project.
“GIT has got your back, takes care of merging any conflict and saves the day”.
Git is een mooi voorbeeld van een open-source project. Inmiddels werken er wereldwijd vele developers mee aan de ontwikkeling van de software.