Versiebeheersysteem

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een versiebeheersysteem of VCS (Engels: Version Control System) is een computerprogramma of een verzameling programma's waarmee men de wijzigingen in documenten, programma's of andere informatie bewaard in computerbestanden kan beheren. Een VCS wordt het meest gebruikt bij de ontwikkeling van software, zodat meerdere mensen wijzigingen kunnen aanbrengen aan dezelfde bestanden. Wijzigingen worden meestal aangeduid met een code, het "revisienummer" of "revisieniveau". Elke wijziging wordt gekoppeld aan een timestamp en aan de persoon die de wijziging maakte. Wijzigingen kunnen vergeleken worden, hersteld en soms samengevoegd.

Een versiebeheersysteem is meestal een apart programma, maar het is ook in beperkte mate ingebouwd in sommige software zoals tekstverwerkers (bijvoorbeeld Microsoft Word, OpenOffice.org Writer, KOffice, Pages, Google Docs), spreadsheets (bijvoorbeeld OpenOffice.org Calc, Google Spreadsheets, Microsoft Excel), en in verschillende CMS Systemen. Het is ook een kenmerk van wiki-software, zodat wijzigingen altijd teruggedraaid kunnen worden, bijvoorbeeld bij vandalisme.

Gebruik[bewerken]

Een computerprogramma bijvoorbeeld is meestal te complex om in één keer te schrijven. Vaak gaat er enige tijd voorbij voordat het af is (van dagen tot jaren), en zelfs als het af verklaard wordt, gaat de maker vaak verder met een volgende, betere versie van het programma.

Een versiebeheersysteem bewaart voldoende informatie om oudere versies te kunnen terugvinden. Ook kan er voor elke wijziging een omschrijving van die wijziging (zoals b.v. de reden) bewaard worden. Wijzigingen die later problemen blijken te veroorzaken kunnen er gemakkelijk mee ongedaan worden gemaakt.

Sommige versiebeheersystemen staan ook toe om verschillende versies van hetzelfde programma tegelijk te beheren. Zo kan de maker zowel aan de nieuwe versie werken als fouten uit de oude versie halen. (Dergelijke hoofdversies heten releases, vrijgaves).

Werking[bewerken]

Over het algemeen werkt een VCS met een van de volgende twee methoden.

  • vergrendelen - bewerken - ontgrendelen
  • kopiëren - bewerken - samenvoegen

Vergrendelen - Bewerken - Ontgrendelen[bewerken]

Bij de eerste methode wordt een bestand exclusief toegewezen aan een bepaalde ontwikkelaar, andere ontwikkelaars kunnen niet tegelijkertijd aan dezelfde broncode werken. Als de ontwikkelaar klaar is met het aanbrengen van wijzigingen wordt de broncode weer vrijgegeven voor anderen.

Kopiëren - Bewerken - Samenvoegen[bewerken]

Vaak werken meerdere mensen tegelijkertijd aan één bestand. Sommige versiebeheersystemen staan daarom toe dat meerdere mensen hetzelfde bestand tegelijkertijd kunnen bewerken. Bij het terugzetten van de wijzigingen in het VCS wordt gecontroleerd of wijzigingen elkaar overlappen. In dat geval moet er handmatig gekozen worden hoe de wijzigingen toch beide kunnen worden doorgevoerd.

Terminologie[bewerken]

Repository
De repository is de plaats waar de bestanden en de informatie over de historie van de bestanden wordt bewaard.
Working copy
De working copy is een lokale kopie van bestanden uit de repository,van een bepaalde datum of revisie. Dit zijn de bestanden waar de gebruiker de wijzigingen in aanbrengt, vandaar de naam.
Check-out 
Een check-out (of checkout of co) maakt een working-copy aan. Een check-out zorgt voor het kopiëren van een bepaalde of de meest recente versie van de bestanden
Commit 
Een commit of check-in is de actie waarbij een kopie van de veranderingen die zijn aangebracht in de working-copy in de repository wordt vastgelegd.
Change 
Een change (of diff of delta) is een bepaalde wijziging op een bestand dat onderdeel is van de repository. De granulariteit van wat een change precies is verschilt van systeem tot systeem
Update 
Een update (of sync) brengt de wijzigingen die in de repository zijn aangebracht ook aan in de lokale working copy.
Branch 
Een verzameling van bestanden in de repository kunnen worden branched of forked op een bepaald moment, zodat vanaf dat moment er twee versie van dezelfde bestanden aanwezig zijn in de reposotiry. Hierdoor kunnen twee verschillende versies van een systeem tegelijkertijd worden aangepast.
Merge 
Een merge of integration zorgt voor het toepassen van meerdere wijzigingen op hetzelfde bestand..
  • Dit kan gebeuren als één gebruiker, die zijn lokale working-copy bepaalde bestanden heeft aangepast, de wijzigingen aanbrengt in de repository, terwijl deze bestanden ook zijn aangepast door één of meer andere gebruikers.
  • Als er een branch is gemaakt en er een probleem wordt opgelost dat in beide versie bestaat, dan wordt de oplossing vaak in één branch aangebracht en wordt dit bestand weer gemerged met de andere branch.
  • Een merge kan ook optreden als twee (of meer) branches weer worden samengevoegd tot één branch.
Revision 
Een revision of version is één versie in een keten van aanpassingen.
Tag 
Een tag of release markeert een belangrijke momentopname op een bepaalde moment. Over het algemeen wordt op deze manier een bepaalde versie gemarkeerd.
Import 
Een import is het in de repository zetten van bestanden die daar nog geen onderdeel van uitmaakten.
Export 
Een export is gelijk aan een check-out, behalve dat er geen meta data wordt meegestuurd over versies. Dit is het tegengestelde van een import
Conflict 
Een conflict treedt op als twee wijzigingen samenvallen. Afhankelijk van het soort systeem kan dit gaan over een bestand of een deel van een bestand. Vaak moet een gebruiker aangeven wat er met de beide wijzigingen moet gebeuren
Resolve 
Het oplossen van een conflict door een gebruiker.
Baseline 
Over het algemeen is dit een set van bestanden met dezelfde tag, die gebruikt kan worden als basis voor verdere ontwikkelingen.

Bekende versiebeheersystemen[bewerken]

Bekende versiebeheersystemen zijn: