Wat is versiebeheer?
Versiebeheer, ook wel broncontrole genoemd, is de werkwijze waarbij wijzigingen in softwarecode worden bijgehouden en beheerd. Versiebeheersystemen zijn softwaretools die softwareteams helpen om wijzigingen in de broncode na verloop van tijd te beheren. Nu de ontwikkelomgevingen zijn versneld, helpen versiebeheersystemen softwareteams om sneller en slimmer te werken. Ze zijn vooral nuttig voor DevOps-teams omdat ze hen helpen de ontwikkeltijd te verkorten en het aantal succesvolle implementaties te verhogen.
Software voor versiebeheer houdt elke wijziging in de code bij in een speciaal soort database. Als er een fout wordt gemaakt, kunnen ontwikkelaars de klok terugdraaien en eerdere versies van de code vergelijken om te helpen de fout te herstellen en tegelijkertijd de overlast voor alle teamleden tot een minimum te beperken.
Voor bijna alle softwareprojecten is de broncode zoiets als de kroonjuwelen: een kostbaar bezit dat moet worden beschermd. Voor de meeste softwareteams is de broncode een repository van de onschatbare kennis en inzichten over het probleemdomein die de ontwikkelaars door zorgvuldige inspanningen hebben verzameld en verfijnd. Versiebeheer beschermt de broncode tegen zowel catastrofes als de toevallige verslechtering van menselijke fouten en onbedoelde gevolgen.
Softwareontwikkelaars die in teams werken, schrijven voortdurend nieuwe broncode en wijzigen de bestaande broncode. De code voor een project, app of softwarecomponent is doorgaans georganiseerd in een mappenstructuur of bestandsstructuur. De ene ontwikkelaar in het team werkt bijvoorbeeld aan een nieuwe functie, terwijl een andere een niet-gerelateerde bug oplost door de code te wijzigen. Elke ontwikkelaar kan wijzigingen aanbrengen in verschillende delen van de bestandsstructuur.
Versiebeheer helpt teams dit soort problemen op te lossen door elke individuele wijziging van elke bijdrager bij te houden en om te voorkomen dat er conflicten ontstaan doordat er gelijktijdig in hetzelfde bestand wordt gewerkt. Wijzigingen die in een deel van de software worden aangebracht, kunnen incompatibel zijn met wijzigingen die worden aangebracht door een andere ontwikkelaar die tegelijkertijd werkt. Dit probleem moet op een ordelijke manier worden ontdekt en opgelost zonder het werk van de rest van het team te blokkeren. Bovendien kan bij alle softwareontwikkeling elke wijziging op zichzelf nieuwe bugs met zich meebrengen en is nieuwe software pas te vertrouwen als deze is getest. Het testen en ontwikkelen gaan dus samen verder tot er een nieuwe versie beschikbaar is.
gerelateerd materiaal
Git cheat sheet
Oplossing bekijken
Git leren met Bitbucket Cloud
Goede software voor versiebeheer ondersteunt de workflow van een ontwikkelaar, zonder dat dit een bepaalde manier van werken vereist. Idealiter werkt het ook op elk platform, in plaats dat je voorschrijft welk besturingssysteem of welke toolchain ontwikkelaars moeten gebruiken. Geweldige versiebeheersystemen zorgen voor een soepele en continue stroom van wijzigingen in de code in plaats van het frustrerende en onhandige mechanisme van bestandsvergrendeling, door één ontwikkelaar groen licht te geven en de voortgang van andere ontwikkelaars te blokkeren.
Softwareteams die geen enkele vorm van versiebeheer gebruiken, lopen vaak tegen problemen aan, zoals niet weten welke wijzigingen zijn aangebracht die beschikbaar zijn voor gebruikers of het ontstaan van onverenigbare wijzigingen tussen twee niet-gerelateerde werkstukken, die vervolgens zorgvuldig moeten worden ontward en herbewerkt. Als je een ontwikkelaar bent die nog nooit versiebeheer heeft gebruikt, heb je misschien versies aan je bestanden toegevoegd, misschien met achtervoegsels zoals 'definitief' of 'laatste' en kreeg je later te maken met een nieuwe definitieve versie. Misschien heb je op codeblokken gereageerd omdat je bepaalde functies wilt uitschakelen zonder de code te verwijderen, omdat je bang bent dat dat later kan worden gebruikt. Versiebeheer is een uitweg voor al deze problemen.
Software voor versiebeheer is een essentieel onderdeel van de dagelijkse professionele werkwijzen van moderne softwareteams. Afzonderlijke softwareontwikkelaars die gewend zijn om in hun teams met een geschikt versiebeheersysteem te werken, zijn zich doorgaans bewust van de ongelooflijke waarde die versiebeheer hen biedt, zelfs bij kleine soloprojecten. Zodra ze eenmaal gewend zijn aan de krachtige voordelen van versiebeheersystemen, overwegen niet veel ontwikkelaars meer om zonder versiebeheersystemen te werken, zelfs niet voor niet-softwareprojecten.
Wat is een versiebeheersysteem?
Het gebruik van versiebeheersoftware is een best practice voor goed presterende software- en DevOps-teams. Versiebeheer helpt ontwikkelaars ook om sneller te handelen en stelt softwareteams in staat om de efficiëntie en flexibiliteit te behouden naarmate het team groeit en meer ontwikkelaars omvat.
Versiebeheersystemen (VCS, Version Control Systems) zijn de afgelopen decennia sterk verbeterd, maar sommige zijn beter dan andere. VCS worden ook wel SCM-tools (Source Code Management) of RCS (Revision Control System) genoemd. Een van de meest populaire VCS-tools die momenteel in gebruik is, heet Git. Git is een gedistribueerde VCS, een categorie die bekend staat als DVCS, daarover later meer. Zoals veel van de populairste VCS-systemen die momenteel beschikbaar zijn, is Git gratis en open source. Ongeacht hoe ze genoemd worden of welk systeem wordt gebruikt, de belangrijkste voordelen die je van versiebeheer mag verwachten, zijn de volgende.
1. Een complete wijzigingsgeschiedenis op lange termijn van elk bestand. Deze bevat elke verandering die door wie dan ook door de jaren heen is aangebracht. De wijzigingen omvatten het aanmaken en verwijderen van bestanden en het bewerken van de inhoud ervan. De ene VCS-tool is beter in het hernoemen en verplaatsen van bestanden dan de andere. Deze geschiedenis moet ook de auteur, de datum en de notities over het doel van elke wijziging bevatten. Met de volledige geschiedenis kun je teruggaan naar vorige versies om te helpen bij het analyseren van de hoofdoorzaken van bugs, en het is cruciaal om problemen in oudere versies van software op te lossen. Als er actief aan de software wordt gewerkt, kan bijna alles als een 'oudere versie' van de software worden beschouwd.
2. Branching en samenvoeging. Teamleden gelijktijdig laten werken is een makkie, maar zelfs mensen die alleen werken, kunnen baat hebben bij de mogelijkheid om te werken aan onafhankelijke veranderingsstromen. Door een 'branch' aan te maken in VCS-tools blijven meerdere werkstromen onafhankelijk van elkaar, terwijl het ook de mogelijkheid biedt om het werk later weer samen te voegen, zodat ontwikkelaars kunnen controleren of de wijzigingen in elke branch geen conflicten opleveren. Veel softwareteams passen de werkwijze toe om voor elke functie te vertakken, of voor elke release, of zelfs voor beide. Er zijn veel verschillende workflows waaruit teams kunnen kiezen wanneer ze beslissen hoe ze gebruik willen maken van branches en het samenvoegen van branches in een VCS.
3. Traceerbaarheid. In staat zijn om elke wijziging in de software te traceren en te koppelen aan software voor projectbeheer en het opsporen van bugs, zoals Jira, en de mogelijkheid om elke wijziging te annoteren met een bericht dat het doel en de bedoeling van de wijziging beschrijft, kan niet alleen helpen bij de analyse van de hoofdoorzaak en ander sporenonderzoek. Als je de geschiedenis van de code met aantekeningen binnen handbereik hebt wanneer je de code leest, en als je probeert te begrijpen wat de code doet en waarom de code zo is ontworpen, kunnen ontwikkelaars correcte en harmonieuze wijzigingen aanbrengen die in overeenstemming zijn met het beoogde langetermijnontwerp van het systeem. Dit kan met name belangrijk zijn om effectief te kunnen werken met oude code en is cruciaal om ontwikkelaars in staat te stellen toekomstige werkzaamheden met enige nauwkeurigheid in te schatten.
Hoewel het mogelijk is om software te ontwikkelen zonder gebruik te maken van versiebeheer, is het project dan wel onderhevig aan een enorm risico dat geen enkel professioneel team wordt aangeraden te accepteren. De vraag is dus niet of je versiebeheer moet gebruiken, maar welk versiebeheersysteem je moet gebruiken.
Je hebt veel opties, maar we gaan ons hier maar richten op eentje: Git. Meer informatie over andere soorten software voor versiebeheer.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.