Omdat de code voor het tool waar ik gisteren over schreef niet alleen in uren programmeerwerk maar ook in omvang een redelijke omvang begint aan te nemen, heb ik besloten niet langer alleen te vertrouwen op de mogelijkheid van Notepad++ (mijn favoriete editor) om meerdere versies van de code op te slaan. Het terugvinden van oudere versies van de code, zeker in het stadium van leren en ontdekken van wat wel en niet mogelijk is, blijkt niet altijd even eenvoudig.
Subversion
Daarom ben ik toch maar aan de slag gegaan met SVN (Subversion), een versiebeheersysteem waarmee ik tijdens mijn werkzaamheden aan QTI 2 opgedaan heb. Daar was het extra handig/noodzakelijk omdat we met twee personen op hele verschillende plekken aan de documentatie (in XML formaat overigens), voorbeelden (eveneens in XML formaat) en programmacode (in Python) werkten. SVN is niet zo handig voor het bijhouden van wijzigingen in bijvoorbeeld Word-documenten en zo. Dan kun je beter gebruik maken van Google Docs.
Maar in mijn geval gaat het nu om een complete mappenstructuur met PHP-bestanden, stylesheets in CSS formaat, JavaScript scripts en een verzameling afbeeldingen. En daar is SVN uitstekend geschikt voor.
Hoe werkt het?
Het principe werkt als volgt: alle code wordt opgeslagen in een SVN Repository. Elke ontwikkelaar (in dit geval alleen ikzelf, maar soms van verschillende computers) slaat een kopie van de code (bestanden en mappenstructuur) op zijn/haar lokale computer op om te bewerken (= check out). Na het bewerken van de bestanden kan de ontwikkelaar die weer terug in de repository plaatsten (= check in). Daarbij worden niet de bestanden/versies in de repository overschreven, maar worden er (als er wijzigingen hebben plaats gevonden) nieuwe versies opgeslagen. Deze history van versies wordt opgeslagen en is terug te kijken. Verschillende versies kunnen vergeleken worden met elkaar en indien nodig kan een oudere versie teruggezet worden. Een beetje vergelijkbaar met het werken in een wiki dus.
SVN Server
Ik gebruik XAMPP voor het lokale ontwikkelwerk en het zou ook mogelijk moeten zijn om SVN met XAMPP te combineren. Ik heb dat om twee redenen niet uitgeprobeerd. Ten eerste omdat ik bij Dreamhost al de beschikking heb over een SVN server. Daarvoor hoefde ik dus niets te installeren, maar kon ik eenvoudig een nieuwe instantie van de server aanmaken door het invullen van een paar gegevens in een schermformulier. Daarnaast heeft deze optie als voordeel dat ik gemakkelijk aan de code kan zonder mijn ontwikkelmachine zelf vanaf internet toegankelijk te hoeven maken en zonder die steeds aan te hoeven laten staan.
SVN Client
Het inchecken en uitchecken van de code doe je met behulp van een SVN client. Daar zijn er een aantal van, voor Windows is de bekendste ongetwijfeld TortoiseSVN, maar daar heb ik slechte herinneringen aan (voornamelijk omdat voorheen mijn systeem er zo traag als een tortoise van werd). Probeer hem gerust uit, er zijn mensen die het juist een prettig programma vinden vanwege de nauwe integratie met de Windows Explorer.
Ik maak in plaats daarvan gebruik van dezelfde SVN client die ik ook bij het QTI project gebruikte: de Syncro SVN Client die als onderdeel van de (niet gratis) Oxygen XML editor wordt meegeleverd. Die doet voor mij wat hij moet doen en ik had die licentie toch al in huis.
SVN via het web
Een van de aardige opties van het bij Dreamhost hebben draaien van een SVN server is de mogelijkheid om de WebSVN interface te installeren. Die zorgt er voor dat ik via mijn browser eveneens toegang heb tot de code. Inclusief de oude versies en de mogelijkheid om die met elkaar te vergelijken.
Installatie is een kwestie van het uploaden van de PHP bestanden naar de server en het aanpassen van de configuratieregel die naar jouw repository moet verwijzen. Standaard is het echter zo dat iedereen die de url van de webinterface kent nu je SVN repository kan bekijken. Voorlopig hou ik de code echter liever nog even intern. Daarom heb ik e.e.a. achter een wachtwoord geplaatst met behulp van de uitleg op deze pagina (die zeker niet alleen bij Dreamhost werkt).
…nu alleen nog zorgen dat de code ook voorzien is van de nodige documentatie….
Dag Pierre,
Ik heb een subversion repository bij Unfuddle (http://unfuddle.com/), gratis tot 200Mb. Maar die grens begin ik te naderen. Dus goed om in jouw verhaal te lezen dat bij Dreamhost ook Subversion zit inbegrepen. Deze hosting provider stond al om mijn lijstje om een van websites onder te brengen en nu je daar Subversion bij krijgt is het helemaal aantrekkelijk. En ik kan me ook goed redden met dezelfde Subversion client. Met de Oxygen XML editor werk ik al een aantal jaren tot volle tevredenheid en niet alleen vanwege de academic license prijs van $64. Ook de ondersteuning voor DITA (waar ik nu mijn documentatie en cursusmateriaal in maak) en Docbook is goed.
Ben
Ze zijn niet altijd heel snel (daarom host ik het blogdeel nu in NL) en niet 100% up (al valt het de laatste paar maanden weer heel erg mee) maar ruim voldoende voor de prijs.
Ik heb net even een nieuwe promocode aangemaakt. Als je promocode “ICTOBLOG” gebruikt dan krijg je $97 korting voor het eerste jaar als je voor een jaar inschrijft (normaal $119,40 per jaar, nu dan dus het eerste jaar voor $22,40).
Let op! Er zijn mensen die flink mopperen op Dreamhost. Ik gebruik ze al 4 jaar als host en als plek waar ik niet op bandbreedte of schijfruimte hoef te letten is het prima voor erbij.