Subversion introduction

Marc Groenewegen (marcg@dinkum.nl)

25 september 2007

Document Information
Organisation Hogeschool voor de Kunsten Utrecht (HKU)
Version 0.2
Status draft
Abstract:
Dit document geeft een introductie in het gebruik van het versiebeheersysteem Subversion.

Table Of Contents

1 Introductie

2 Nuttige info

3 Beginnen met Subversion

4 Voorbeeld


1 Introductie

Subversion is een versiebeheersysteem. Het biedt de mogelijkheid meerdere versies of revisies van bestanden en verzamelingen van bestanden op te slaan, te beheren en terug te halen. Op deze manier wordt het mogelijk de historie van files te achterhalen doordat je kunt zien hoe ze zich ontwikkeld hebben, wie eraan gewerkt hebben en wat de gedachten waren achter veranderingen en implementatiebeslissingen.

Subversion maakt efficient gebruik van diskruimte voor het bewaren van het archief. Je kunt natuurlijk van elke file die je ooit gemaakt hebt een kopie bewaren. Subversion bewaart versies van een project echter door de verschillen tussen files te gebruiken om alleen de laatste versie op te slaan plus een recept om voorgaande files te reconstrueren.

Subversion helpt ook een groep ontwikkelaars die aan hetzelfde project werken. Zonder zo'n systeem moet je uiterst voorzichtig te werk gaan om niet elkaars files te overschrijven. Met Subversion kunnen de gebruikers tegelijk aan dezelfde files werken zonder elkaar in de weg te zitten.

Een belangrijke eigenschap van Subversion is de mogelijkheid om releases van software te maken. Een release kun je zien als een momentopname van een project, bijvoorbeeld wanneer een belangrijke mijlpaal bereikt is en de software in die hoedanigheid verkocht gaat worden.

Dit document biedt een snelle start met Subversion en een voorbeeld om mee te beginnen. Meer informatie over de achtergronden van versiebeheer kun je vinden in het document "Archiving and version control".

1.1 Doelgroep

Dit document richt zich voornamelijk op (software) ontwikkelaars die alleen of in een groep werken, maar het kan ook interessant zijn voor het onderhouden van documentatie en andere verzamelingen van informatie die zich in de tijd ontwikkelt.

2 Nuttige info

2.1 Hoe kom je aan Subversion

Subversion kun je downloaden van de Subversion home page

2.2 Subversion documentatie

Wat achtergrond en een hoop verwijzingen vind je op Wikipedia

2.3 Woordenlijst

repository de database van het versiebeheersysteem
client het programma waar gebruikers mee werken
server het programma dat de database beheert

3 Beginnen met Subversion

In het algemeen gebruik je voor het werken met Subversion een svn-client en een svn-server. De server beheert het archief en verwerkt opdrachten van diverse clients, terwijl de verschillende gebruikers op hun computer hun files beheren met een svn-client die zonder dat ze daar veel van merken contact maakt met de server. In dit document bespreek ik alleen het werken met Subversion clients.

Clients zijn er in diverse uitvoeringen: als commandline-programma, met een GUI en zelfs als web-interface.

Voordat je met een Subversion client kunt werken moet je eerst instellen welke Subversion server je wilt gebruiken en waar de repository zich op die server bevindt. Andere instellingen verschillen per client en hebben bijvoorbeeld te maken met voorkeuren voor het bekijken van files, van verschillen tussen files en het gedrag bij check-in en check-out.

3.1 Instellen van server en repository

Subversion kan met een repository op de computer van de gebruiker werken, maar ook met een repository ergens anders in een netwerk of op het internet. Bij het aangeven welke repository je wilt gebruiken moet je dan ook een protocol opgeven, de naam van de server en welke repository op de server.

Voorbeelden:

Voorbeelden van commando's in een command line client:

Nog wat nuttige commando's:

- svn diff
- svn commit
- svn update
- svn log
- svn cat
- svn list
- svn checkout / co
- svn cleanup
- svn commit / ci
- svn update / up
- svn delete

3.2 Grafische clients

Hoewel de command-line interface van Subversion erg krachtig is heeft een grafische client bepaalde voordelen. Kies afhankelijk van de situatie welke client je verkiest.

Het is mogelijk om een web server (bv. Apache) met Subversion te laten werken. Dit opent de mogelijkheid om Subversion via een web-browser te gebruiken.

Enkele voordelen van een grafische client:

Enkele grafische clients:

4 Voorbeeld

We maken een klein programma dat uit enkele files bestaat. Het berekent hoe ver we fietsen uit het aantal omwentelingen, wieldiameter en trapverhouding. Het programma is geschreven in C++ en bestaat uit enkele cpp-files, header files en een ontwerpdocument.

Onderwerpen in dit voorbeeld:

4.1 Voorbereiding

We beginnen met een top-level directory 'bicycle' en subdirectories src (voor source files), include (voor header files) en doc (voor documentatie) en vullen deze met de volgende files:

src include doc

4.2 Project onderbrengen in Subversion

Zoals afgesproken zetten we alleen code in een versiebeheersysteem nadat we gecontroleerd hebben of het compileert, linkt en niet meteen crasht.

We willen het hele project(je) onder versiebeheer plaatsen, dus de hele boom met subdirectories src, include en doc. In svnx kun je vanuit de Finder een heel project naar de repository slepen. Een nieuw project dat -nog- nergens mee samenhangt kun je het beste in de root van de repository zetten.

4.3 Working copies

Wanneer je je project voor de eerste keer in Subversion hebt gezet is het verstandig om even te proberen of je het ook echt uit het archief kunt trekken en op een andere plaats neerzetten. Dan weet je zeker dat het goed in het systeem staat en bovendien creëer je daarmee een 'working copy' waar je vanaf dat moment mee verder kunt werken. De oorspronkelijke code kun je dan eigenlijk net zo goed weggooien.

4.4 Veranderingen aanbrengen

Nu je project onder versiebeheer is kun je naar believen veranderingen in je code aanbrengen, in de wetenschap dat je altijd terug kunt naar de laatste stabiele versie. Nou ja stabiel... dat heb je grotendeels zelf in de hand. Je kunt in ieder geval terug naar versies die je eerder in Subversion hebt gezet. Aanpassingen doe je in files in jouw working copy.

4.5 Check-in (commit)

Wanneer je jouw veranderingen aan Subversion wilt toevertrouwen is het verstandig om eerst te kijken of iemand anders nog veranderingen heeft aangebracht sinds jij je files uit het systeem gehaald hebt. Dat doe je met 'update'. Na zo'n update kunnen jouw files veranderd zijn, dus controleer voor het inchecken nog even of alles nog compileert. Daarna kun je met 'commit' je veranderde files aan het systeem toevertrouwen. Vul altijd een korte motivatie in waarom je een check-in doet. Daarmee kunnen jij en anderen de historie van het project beter begrijpen.

4.6 Veranderingen bekijken

Met 'diff' kun je zien wat de verschillen zijn tussen jouw working copy en het archief, of tussen verschillende versies van files in het archief. Je ziet niet alleen je eigen wijzigingen, maar ook die van anderen.

4.7 Locks

Niet doen. Zie "Archiving and version control".