Warning: Declaration of Bootstrap_Walker_Nav_Menu::start_lvl(&$output, $depth) should be compatible with Walker_Nav_Menu::start_lvl(&$output, $depth = 0, $args = Array) in /home/pimscha/public_html/wp-content/themes/stanleywp/functions/function-extras.php on line 61
SVN of Git | pimschaaf.nl

SVN of Git

svn_en_git

Teruggekomen van mijn reis zie ik de kans om te beginnen met een schone lei. Ik kan mijn ontwikkelomgeving herzien. Een belangrijke toevoeging die ik daaraan heb gedaan is de invoer van versiebeheer.

Bij bedrijven zoals DPI is werken met een versiebeheersysteem vanzelfsprekend. Daarom raakte ik in de periode voor mijn reis, waarin ik voor DPI werkte,  al gewend aan werken met Subversion, één van de gratis software versie- en revisiebeheersystemen die op de markt zijn. Met een versiebeheersysteem wordt bijgehouden welke wijzigingen je aan je code in je project hebt gedaan. Ben je klaar met je wijzigingen, dan sla je die op door een ‘commit’ te doen. De staat van de code wordt dan onder een label opgeslagen in een zogenaamde repository: de optelling van alle commits. Werk je vervolgens verder en loop je vast, dan kan je altijd terug naar de eerdere versie van de code.

Samenwerken aan eenzelfde codebase wordt makkelijker met een versiesysteem, als de repository gecentraliseerd is. Iedereen maakt een checkout uit de centrale repository en werkt lokaal aan wijzigingen aan de code. Bij een commit wordt gekeken of de wijzigingen die jij hebt gedaan, niet conflicteren met wijzigingen van je collega. Zonder versiebeheersysteem loop je een groot risico de wijzigingen van je collega simpelweg te overschrijven. Op elk gewenst moment kan je je lokale codebase updaten. Commits in de repository worden dan opgehaald en toegevoegd aan je codebase. Zo kan je snel de toevoegingen van je collega’s overnemen en daar op verder werken.

Wanneer je alleen aan een codebase werkt, zijn er minder expliciete voordelen. Van samenwerken, meerdere checkouts en eventuele conflicten bij aanpassingen is geen sprake. Je lokale versie is altijd de laatste versie. Deze versie wordt alleen door jou zelf overschreven. Ontwikkelomgevingen zoals Eclipse houden ook zonder versiebeheer een geschiedenis bij van de inhoud van bestanden, waarmee je wijzigingen kan terugdraaien. Toch blijkt het mij zeer de moeite waard om versiebeheer in mijn workflow op te nemen.

Voor mijzelf werk ik met Git, een ander gratis software versie- en revisiebeheersysteem. Als ik begin aan een wijziging aan een codebase, maak ik een zogenaamde branch. Dit is een aftakking van de huidige staat van de codebase, waarin wijzigingen kunnen worden gecommit. Zolang ik werk aan dezelfde wijziging, werk ik in dezelfde branch. Komt er tegelijk een verzoek voor een andere wijziging, dan kan ik van branch wisselen en de ontwikkeling van die wijziging in die aftakking doorvoeren. Beide aftakking zijn afgeleid van dezelfde trunk, maar kunnen gedurende het ontwikkelproces helemaal gescheiden blijven. Is mijn ene branch onvoltooid, dan houdt dat me niet op als ik in een andere branch werk.

Door te branchen houd je overzicht in je werkzaamheden. Je werkt vanzelf meer gestructureerd aan een ontwikkeling op je codebase. Een wijziging vind plaats in een eigen branch en is pas af met een commit. De commit kan vervolgens gemerged worden met de hoofd codebase, waardoor de trunk weer een stukje groeit. Conflicten in code bij het mergen van verschillende branches kunnen worden gesignaleerd, in plaats van per ongeluk overschreven.

Met een versiebeheersysteem maak ik minder fouten en kan ik sneller schakelen. Zo kan ik sneller resultaat boeken. Dat is een verbetering. Dat haalt gelijk de veelgestelde vraag uit de lucht: “SVN of Git?”. Mijn korte antwoord is: “Ja, gebruik SVN of Git”. Of welk versiebeheersysteem je ook maar fijn vindt.

0 Comments

  1. Pingback: Front-end developer tools 2016 | pimschaaf.nl

Leave a Reply

Jouw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

De volgende HTML tags en attributen zijn toegestaan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>