SVN, voluit: subversion, is een hulpmiddel om bestanden uit te wisselen tussen de leden van een team.
SVN zorgt ervoor dat iedereen teamlid steeds over de laatste versies van alle project-files beschikt.
SVN houdt bij wie wijzigingen aanbrengt wanneer, aan welke files en op welke regels.
Dankzij SVN gaat kostbaar werk nooit verloren: je kan steeds terugvallen op vroegere versies van je project.
Er bestaan tientallen SVN-programma's, allemaal open-source. We zullen de werking van SVN verder demonstreren met TortoiseSVN, te vinden op de dowloadpagina. We veronderstellen dat de installatie vlekkeloos is verlopen.
We zullen nu een working copy aanmaken van ons project. Een working copy is, zoals het woord het zegt een kopie van alle project-files, waaraan je als teamlid kan werken.
Open een explorer-window en maak een folder aan waaronder alle project-files moeten komen. Rechts-klink op de folder en kies 'checkout...' in het menuutje.
checkout is de actie waarbij een nieuwe working copy wordt aangemaakt, vertrekkende van een bestaande repository. Een repository is dan weer de plaats waar SVN de historiek van alle wijzigingen bijhoudt.
Er verschijnt een dialoogvenster waarin wordt gevraagd naar de locatie van de repository. Kies voor de locatie https://svn.ulyssis.org/repos/pg/klinkermachine/trunk/trunk en klik OK.

Een tweede dialoogvenster komt nu rapporteren over de checkout. Het zegt ondermeer dat het project in versie 96 zit en dat het op dat moment 212 files bevatte. Je bent nu klaar om met de files te werken.

Merk op dat de gekozen checkout folder (in dit voorbeeld 'C:/temp/klinkermachine') een ander icoontje heeft gekregen. Dit betekent dat SVN vanaf nu deze folder beheert, en dat je niet roekeloos onderliggende files en directories mag deleten of verplaatsen. Zie verder.
De clou van teamwerk is nu dat je, als teamlid, ... werkt. Stel even dat je de file 'startup.m' hebt aangepast. SVN maakt gewijzigde files zichtbaar door een rood icoontje. Je bent tevreden over de aanpassing en wil dit delen met de rest van het team.
Dit kan door 'Commit...' te selecteren van het rechtsklikmenuutje.

commit is de actie waarbij gewijzigde files worden opgestuurd naar de repository, zodat iedereen er aan kan.
Er verschijnt nu een dialoogvenster. Er wordt gevraagd een boodschap in te vullen die je wijzigingen omschrijft. Dit is niet strikt noodzakelijk, maar helpt je teamleden wel sterk.
Alvorens te committen, kan je nog even controleren wat je nu juist gewijzigd had. Dubbel klik op de file in de lijst in het dialoogvenster. Er verschijnt een diff venster.
Een diff is een vergelijking van 2 tekst-files. In dit geval wordt de oude versie van startup.m vergeleken met de nieuwe versie.

Je kan ook meerdere files tegelijkertijd commiten of ook hele folders...
Je nieuwe versie van 'startup.m' staat nu in de repository. De andere teamleden moeten hun working copy nu actualiseren, zodat ook zij de nieuwe versie van de file binnenkrijgen.
Dit doen ze door de actie 'update...' te kiezen en OK te klikken.

Een versie-conflict optreden bij het committen (als er iemand al een commit deed na uw laatste update) of bij het updaten (als er een bestand gewijzigd werd in de repository terwijl jij er ook aan werkte).
Een conflict oplossen kan via het commit of update dialoogvenster.
Het dialoogvenster toont de volgende opties om het conflict op te lossen:
In een working copy mag je niet zomaar wat rommelen met files, anders wordt de working copy corrupt (lees: waardeloos).
Een file van naam veranderen of verwijderen doe je door rechts op de file te klikken en het uitklapmenu 'TortoiseSVN...' te gebruiken.
Files verhuizen naar andere directories kan door de files te selecteren en te slepen terwijl je de rechtermuisknop ingedrukt houdt.
De illustratie toont hoe men 'demo.m' verhuist naar de subdirectory 'tools'.

Probeer het aantal speciale acties tot een minimum te herleiden.
SVN is bedoeld voor tekstbestanden (bvb. notepad files, m-files, Latex, html, xml, ...). Binaire files (afbeeldingen, Microsoft Word en Powerpoint, ...) zijn niet geschikt voor SVN. Je kan dergelijke files wel in de repository zetten, maar je kan niet nakijken welke regels er gewijzigd zijn.
De volgende mensen gaven suggesties om deze tutorial beter te maken: