Wat is versiebeheer
Last updated
Last updated
Versiebeheer (Version Control System) is het systeem waarin veranderingen in een bestand of groep van bestanden over de tijd wordt bijgehouden. Het stelt ontwikkelaars in staat om deze wijzigingen later te vergelijken en eventueel terug te draaien.
Versiebeheer wordt ook gebruikt om met meerdere mensen samen aan één project te werken. Elke deelnemer aan het project kan dan aanpassingen doen aan het project en die publiceren in “versies”. Wil je later weten wie wat gedaan heeft in het project dan kan je dat terugvinden in de versiegeschiedenis.
Stel dat je gedurende een langere tijd aan een wat groter project voor school werkt. Het is dan handig om bijvoorbeeld per datum een zip bestand bij te houden houden van je project.
Als je natuurlijk gedurende maanden aan dit project zou werken krijg je heel wat verschillende versies van dat ene project. Dit pakt heel wat plaats in, en zal niet echt overzichtelijk meer zijn. Het wordt dan ook onmogelijk nog te achterhalen hoe de verschillende versies er terug uitzagen.
Bovenstaande methode wordt veel gebruikt omdat ze zo simpel is, maar het is ook ongelofelijk foutgevoelig. Het is makkelijk te vergeten in welke map je zit en naar het verkeerde bestand te schrijven, of onbedoeld over bestanden heen te kopiëren. Om met dit probleem om te gaan hebben programmeurs lang geleden lokale VCSen ontwikkeld die een simpele database gebruiken om alle veranderingen aan bestanden te beheren.
De volgende belangrijke uitdaging waar mensen mee te maken krijgen is dat ze samen moeten werken met ontwikkelaars op andere computers. Om deze uitdaging aan te gaan ontwikkelde men Gecentraliseerde Versiebeheersystemen. Deze systemen hebben één centrale server waarop alle versies van de bestanden staan en een aantal werkstations die de bestanden daar van ophalen (check out).
Dit systeem heeft vele voordelen, maar wanneer er een probleem met de server optreedt ...
In een DVCS (zoals Git, Mercurial, Bazaar of Darcs) downloaden werkstations steeds de hele opslagplaats (de repository). Dus als een willekeurige server uitvalt en deze systemen werkten via die server samen dan kan de repository van eender welke werkstation terug worden gekopiëerd naar de server om deze te herstellen. Elke kloon is dus in feite een complete backup van alle data.
Bovendien kunnen veel van deze systemen behoorlijk goed omgaan met meerdere (niet-lokale) repositories tegelijk, zodat je met verschillende groepen mensen op verschillende manieren tegelijk aan hetzelfde project kan werken.