0%

Waar versiebeheer voor dient

De map vol kopieën

Waarschijnlijk heb je versiebeheer al eens zelf uitgevonden. De meeste mensen doen dat.

Meestal ziet het er zo uit:

report.txt
report-v2.txt
report-v2-fixed.txt
report-FINAL.txt
report-FINAL-actually.txt
report-FINAL-use-this-one.txt

Niemand plant dit. Het groeit met elke voorzichtige beslissing. Je staat op het punt iets te veranderen en weet niet zeker of het een verbetering is, dus je bewaart de oude versie voor de zekerheid. Dat gevoel klopt helemaal. Versiebeheer is op datzelfde idee gebouwd.

Het probleem zit niet in dat gevoel. Het probleem is dat kopieën een slechte manier zijn om ernaar te handelen.

Waar kopiëren tekortschiet

Kijk nog eens naar die lijst en probeer drie gewone vragen te beantwoorden.

Welk bestand is het echte? report-FINAL-use-this-one.txt beweert dat te zijn, maar report-FINAL.txt deed dat destijds ook. De naam legt vast hoe je erover dacht toen je het opsloeg, niet welke plek het in het verhaal heeft.

Wat veranderde er tussen twee bestanden? Je kunt ze allebei openen en langzaam naast elkaar lezen, in de hoop dat het je opvalt. Bij zes alinea’s tekst is dat vervelend. Bij zeshonderd regels code is het niet realistisch.

Waarom heb je die wijziging gemaakt? Die vraag is meestal niet te beantwoorden. De bestandsnaam heeft ruimte voor een versienummer en een stemming. Niet voor “de tweede alinea verwijderd omdat de getallen erin niet klopten”.

Die derde vraag doet het meeste pijn, maar pas later. Daarom negeer je haar nu gemakkelijk. Over zes maanden vind je iets vreemds in je eigen werk en vraag je je af of het een fout is of juist een bewuste verbetering. De kopieën kunnen het je niet vertellen.

Met iemand erbij wordt het lastiger

Stel dat je report-FINAL.txt naar iemand stuurt met de vraag naar het middelste deel te kijken. Terwijl diegene leest, verbeter jij een typefout in de opening.

Je krijgt een bestand met verbeteringen terug. Nu heb je twee bestanden. Elk bevat werk dat in het andere ontbreekt. Geen van beide klopt.

Iemand moet ze nu met de hand samenvoegen: beide lezen en per regel beslissen. Als je dat ooit hebt gedaan, weet je hoe langzaam het gaat en dat je daarbij iets verkeerd hebt gedaan.

Je vindt notes-v3.txt en notes-v4.txt in een map van vorig jaar. Wat kun je uit de bestandsnamen met zekerheid afleiden zonder een van beide te openen?

Wat je eigenlijk wilt

Laat de bestanden even los en beschrijf wat je al die tijd wilde. Je wilde kunnen zeggen:

Bewaar hoe dit project er nu uitziet en laat me opschrijven waarom. Bewaar elk van die opgeslagen versies. Laat me ze later allemaal bekijken, er twee naar keuze vergelijken en zo nodig naar elk ervan teruggaan.

Dat is een redelijke wens, en een map vol kopieën geeft je dat niet. Git wel. De rest van deze cursus gaat over hoe dat werkt.

Nog één ding voordat we verdergaan: dit heeft niets te maken met slordigheid. Het kopieerprobleem is geen gebrek aan discipline dat nettere mensen vermijden. Ook zorgvuldige, ervaren mensen krijgen zo’n map, omdat hun hulpmiddel niet beter kon. Je krijgt nu een beter hulpmiddel.