Version Control 101: Definitie en voordelen

Het veld van software engineering is een snel veranderend veld. Als het om software gaat, zijn er geen definitieve versies. Alle applicaties en codes zijn altijd in voortdurende ontwikkeling. Een van de essentiële aspecten van software engineering is versiebeheer.

Versiebeheersystemen zijn een speciaal type softwareontwikkelingshulpmiddel dat is ontworpen om softwareontwikkelaars te helpen bij het bijhouden van wijzigingen in de broncode van een specifieke toepassing.

Over het algemeen wordt elk softwareproject uitgevoerd door een team van programmeurs/ontwikkelaars. Ieder van hen werkt aan een specifiek aspect van het totale project. Deze ontwikkelaars moeten code schrijven en testen voor hun toegewezen taken zonder de werkende versie van het product te beïnvloeden. Dit is waar versiebeheer te hulp schiet.

Naast het vergemakkelijken van parallelle ontwikkeling van elk software project, wanneer een fout wordt gemaakt in de code, waardoor deze breekt, kunnen we versiebeheer gebruiken om de fout te traceren en terug te gaan naar de laatste werkende versie van de code.

Naarmate de software die we bouwen groter, complexer en veelzijdiger wordt, is de kennis van versiebeheer en hoe deze efficiënt te gebruiken een van de essentiële vaardigheden die elke software ontwikkelaar moet verkrijgen en ontwikkelen.

In dit artikel nemen we een diepe duik in de wereld van versiebeheer, wat het betekent, waarom het wordt gebruikt, en hoe je ermee aan de slag kunt.

Versiebeheer, zoals hierboven kort beschreven, is een hulpmiddel dat ontwikkelaars/programmeurs helpt bij het aanpakken van een aantal alledaagse problemen, zoals: het bijhouden van wijzigingen in de code, helpen bij het onderhouden van de code, en hen in staat stellen om aan dezelfde broncode bestanden te werken zonder elkaars workflow te beïnvloeden.

Het concept van versiebeheer wordt vaak mogelijk gemaakt door speciale soorten systemen die Version Control Systems (VCS) worden genoemd. Deze systemen hebben de laatste jaren veel ontwikkelingen doorgemaakt. Soms worden VCS ook Source Code Management tools (SCM) of Revision Control Systems (RCS) genoemd.

Het populairste VCS van dit moment, dat door miljoenen ontwikkelaars en programmeurs over de hele wereld wordt gebruikt, is misschien wel Git. Andere VCS die tegenwoordig in gebruik zijn, zijn:

  1. PerForce.
  2. Beanstalk.
  3. Apache Subversion.
  4. AWS CodeCommit.

Typen Versiebeheersystemen

Er zijn twee hoofdtypen versiebeheersystemen: gecentraliseerde en gedistribueerde versiebeheersystemen.

Gecentraliseerde versiebeheersystemen

Afbeelding door de auteur (gemaakt met Canva)

Gecentraliseerde versiebeheersystemen (CVCS) zijn een type versiebeheersysteem met één enkele server die alle versies van de codebestanden bevat – vaak opgeslagen in repositories – het aantal bijdragers (programmeurs die aan de codebestanden werken), en de backup-bestanden voor het hoofdproject.

Deze opzet stelt iedere bijdrager aan de code in staat om te weten waar de anderen aan werken, waardoor het gemakkelijker is om te communiceren en de mensen te managen op basis van een specifieke taak.

Het belangrijkste nadeel van deze opzet is dat, omdat alle codebestanden en de backup-bestanden op één gecentraliseerde server worden opgeslagen, als er iets met de server zou gebeuren, dan is alles verloren. Subversion en Perforce zijn voorbeelden van CVCS.

Distributed version control systems

Image by the author (made using Canva)

Distributed Version Control Systems (DVCS) such as Git, Mercurial, or Bazaar are version control systems with one or more main server containing the code files.

However, unlike CVCS, in DVCS, the code files are mirrored on every contributors’ computer, meaning each one of them has its own version of the code, including its full history to work on locally.

So, if any server dies, any of the contributors’ repositories can be copied back up to the server once it’s back on and restore the history of the code files. Dit kan eenvoudig worden gedaan omdat elke kloon van de originele codebestanden in feite een volledige backup is van alle gegevens van het project.

DVCS maakt het mogelijk dat verschillende groepen mensen op verschillende fysieke locaties gelijktijdig kunnen samenwerken binnen hetzelfde project. Dit is een voordeel dat niet mogelijk was in gecentraliseerde systemen.

Voordelen van versiebeheer

Het gebruik van een versiebeheersysteem heeft verschillende voordelen voor elk team van softwareontwikkelaars, waaronder:

1 Back-ups genereren

Het belangrijkste voordeel van het gebruik van een versiebeheersysteem is misschien wel dat elke keer dat een medewerker een repository kloont, hij of zij in zekere zin een back-up maakt van de huidige versie van die repository. Het hebben van meerdere back-ups op verschillende machines is waardevol, zodat we kunnen voorkomen dat de data verloren gaat in het geval van een serverstoring.

2 Testen en experimenteren

In de wereld van vandaag, is elke broncode altijd in ontwikkeling. Er worden altijd nieuwe functies toegevoegd, een nieuw publiek aangesproken en nieuwe toepassingen ontwikkeld.

Wanneer een team aan een softwareproject werkt, hebben ze vaak verschillende klonen van het hoofdproject om nieuwe functies op te ontwikkelen, ze te testen en ervoor te zorgen dat ze goed werken voordat deze nieuwe functie aan het hoofdproject kan worden toegevoegd. Dit kan tijd besparen omdat verschillende aspecten van de code gelijktijdig kunnen worden ontwikkeld.

3 Geschiedenis bijhouden en wijzigingen bijhouden

Het bijhouden van de wijzigingen in een specifiek codebestand kan u en nieuwe medewerkers helpen te begrijpen hoe een specifiek deel van de code tot stand is gekomen.

En als na verloop van tijd de toevoeging van een bepaalde functie problemen veroorzaakt bij het uitbreiden of uitbreiden van het project, stelt het gebruik van versiebeheer de ontwikkelaars in staat om die specifieke functie op te sporen en te wijzigen of te verwijderen zonder de functionaliteit van het project te beïnvloeden.

4 Samenwerken en bijdragen

Een van de belangrijkste voordelen van versiebeheersystemen, in het bijzonder DVCS, is dat het ons in staat stelde om bij te dragen aan projecten die we leuk vonden, ondanks het feit dat we in verschillende landen woonden. Ik zou willen stellen dat het bestaan van DVCS een van de belangrijkste facilitatoren was waardoor open-source technologie zijn huidige succes kon bereiken.

Takeaways

Het volledig begrijpen van versiebeheersystemen, hoe ze werken en ze efficiënt gebruiken is een van de essentiële vaardigheden waar elke programmeur of softwareontwikkelaar aan moet werken en aan moet groeien om uit te blinken in hun carrière.

Versiebeheersystemen kunnen een van die onderwerpen zijn die vrij complex zijn en moeilijk om je hoofd over te wikkelen. Daarom heb ik besloten om een serie artikelen te schrijven over de verschillende aspecten van versiebeheer. Het doel van deze artikelen is om je comfortabel en gemakkelijk aan de slag te laten gaan met versiebeheer.

De komende artikelen in deze serie zullen de basiscommando’s van Git behandelen die iedere ontwikkelaar zou moeten kennen, een aantal geavanceerde commando’s om je te onderscheiden, en hoe je Git efficiënt kunt gebruiken om je werkstroom soepel en aangenaam te maken.