Subversion
| Versie | 1.6.6 |
| Officiële website | http://subversion.apache.org/ |
| Licentiemodel | Apache License v2 |
| Behoort tot de domeinen | Versiecontrole
|
| Getest in | mei 2010 |
Aanbevelingen
Subversion is zeer geschikt als standaard versiecontrolesysteem voor projecten van gemiddelde omvang. Het kan perfect dienst doen als vervanger van CVS (het is zeer gelijkaardig in gebruik) en is zelfs een stuk beter dan dit oude systeem. Doorgaans is het ook zo dat de organisatie van een centraal systeem als Subversion makkelijker te bewerkstelligen is dan die van een gedistribueerd systeem.
Enkel wanneer een project nood heeft aan verregaande refactorings, een groot gebruik van branches voor parallelle lijnen van ontwikkeling, de noodzaak om veel offline te kunnen werken of experimenten uit te voeren met de code die niet interfereren met de rest van de ontwikkeling, is het gebruik van een gedecentraliseerd systeem aan te raden.
Beschrijving
Het gecentraliseerde versiecontrolesysteem Subversion, afgekort Svn, is de de facto opvolger van het aloude systeem CVS, en is dan ook gebouwd om de tekortkomingen in dat systeem aan te pakken. Het wordt momenteel zeer veel gebruikt (waarschijnlijk het meest van alle versiecontrolesystemen) en heeft CVS dan ook op grote schaal vervangen. Recent is het echter een beetje terrein beginnen verliezen tegenover de nieuwere gedistribueerde systemen. Verschillende grote open source projecten maken gebruik van Svn voor hun versiecontrole: onder andere Apache en Eclipse.
Features
- Atomic Commits. Wanneer men in Svn een commit doet, krijgt de hele set van veranderingen één enkele identificatie (revision number). Op die manier kan men een wijziging van een bepaalde persoon op een bepaald tijdstip gemakkelijk beheren (bekijken, ongedaan maken, ...). Bovendien is het systeem zo gebouwd dat indien er iets misgaat tijdens het committen, er niets wordt opgeslagen in de repository. Dit laatste was in CVS vaak niet het geval, waardoor men een repository kon beschadigen. Bovendien kreeg in CVS elke bestandsnaam apart versienummers, waardoor een wijziging van de hele repository op een bepaald tijdstip moeilijk te reconstrueren was.
- Het verplaatsen, kopiëren, hernoemen en verwijderen van bestanden zorgt er normaal gezien niet voor dat de geschiedenis van het bestand verloren gaat (men moet deze veranderingen echter wel via Svn zelf uitvoeren). Kopiëren gaat dan wel erg snel in de repository, aangezien enkel het feit wordt opgeslagen dat er een kopie wordt gemaakt (in de working directory zullen we wel het volledige bestand gekopiëerd zien).
- Naast bestanden wordt ook voor directories versie-informatie bijgehouden.
- Branchen (een parallel evoluerende revisie maken) en Taggen (een revisie een symbolische naam geven) is mogelijk, maar er wordt geen onderscheid gemaakt tussen branches, tags, en directories. het is een goedkope operatie, omdat ze gebruik maakt van de efficiënte kopieerfunctionaliteit.
- Men kan bestanden 'locken'. Dit wil zeggen dat men de enige is die wijzigingen aan dat bestand mag committen, tot men dit 'lock' terug vrijgeeft. Dit is nuttig voor binaire bestanden, zoals b.v. grafisch werk, want typisch kan men daarvoor geen betekenisvolle samenvoeging ('merge') bekomen van twee gelijktijdige wijzigingen, hetgeen men wel doet voor tekstbestanden.
Huidige Beperkingen
- Granulaire toegangscontrole voorzien is soms moeilijk, omdat toegangsrechten zich op het niveau van directories bevinden, en er niet altijd een logische verdeling van rechten over directories mogelijk is.
- Het hernoemen en verplaatsen van bestanden is geïmplementeerd als kopiëren, gevolgd door verwijderen. Dit leidt soms tot moeilijkheden bij het committen.
- In elke directory van een working copy van een gebruiker, bevindt zich een .svn-folder met informatie voor het Svn-systeem. Dit maakt het de gebruiker soms lastig (wanneer deze folder b.v. per ongeluk verwijderd of gekopiëerd wordt). De 'svn cleanup' tool biedt echter soelaas.
Testresultaten
Subversion werd door onderzoek getoetst aan ons OSS maturiteitsmodel. Wat betreft de niet-functionele vereisten, zoals de maturiteit en installeerbaarheid, scoort het zeer goed. Daarnaast werden ook functionele testen uitgevoerd. Vooral integratie met andere tools en gebruiksvriendelijkheid zijn daarbij sterke punten. Iets minder scoort het systeem op de gevoeligheid voor refactoring en het gebruik van branching en tagging.
