Howto Subversion 1. Subversion structuur en uitleg Op de Adwise VDS server staan de repositories die gebruikt kunnen worden. Een subversion repository bevat alle projecten gerelateerd aan de betreffende repository. Adwise heeft vanaf nu 2 resositories waar alle projecten in staan. 1. Projects 2. Adwise CMS In de “Projects” repository staan projecten die niet draaien in het CMS maar wat gewoon op zich zelf staande projecten zijn. Deze repository is simpel opgezet en alle projecten staan direct in de hoofdmap van deze repository. Projects • Klant 1 • Klant 2 • Klant 3 • etc. De “Adwise CMS” repository is qua structuur opgezet volgens een standaard subversion indeling. De repository bestaat uit een structuur als hieronder beschreven. Adwise CMS • branches o keessmit.nl docs src html scripts o leurinkmode.nl etc. o etc. • tags o 1.0 docs src html scripts o 1.1 o 1.2 • trunk o docs o src o html o scripts
Pagina 1 van 6
Howto Subversion De 3 hoofdmappen (branches, tags en trunk) zijn ieder weer verdeeld in submappen. In “trunk” staat de laatste ontwikkel-versie van het CMS. Deze hoeft niet altijd stabiel te zijn, hier kunnen ook commits in plaatsvinden die nog niet goed getest zijn. Als een ontwikkel-versie stabiel wordt bevonden dan word er een versie aangemaakt in de hoofdmap “tags”. Elk project gebouwd in het CMS staat in een submap van “branches” . Dit zijn zogeheten aftakkingen van het CMS en op deze manier kunnen updates aan het standaard CMS makkelijk worden doorgevoerd op projecten. De inhoud van elk project is hetzelfde, qua mappenstructuur, als de hoofdmap “trunk”. Dit geldt ook voor elke submap in de hoofdmap “tags”. Standaard staan er 4 mappen (docs, src, html en scripts) welke ieder een eigen doel hebben. De “docs” map bevat algemene documentatie van bv. het CMS maar kan ook project specifie documentatie bevatten als dat nodig is. In “src” staat de source van het CMS en alle overige code die nodig is om de website te laten draaien, zoals het ORM framework etc. Voor de HTML-ers is er per project een “html” map beschikbaar waarin de volledige platte html, css, javascript en afbeeldingen in opgeslagen kan worden. Vanuit deze map kunnen de PHP-ers de HTML omzetten naar bv. Smarty templates. De HTML map zal ook als terugval fungeren mocht de HTML van de site niet correct zijn. De HTML map word in principe alleen door de betreffende HTML-er(s) bijgewerkt. De “scripts” map is voor toekomstig gebruik. Hier kunnen command-line scripts geplaatst worden om bv. een website vanuit subversion te releasen op test of productie.
Pagina 2 van 6
Howto Subversion 2. Lokale ontwikkelserver Subversion word gebruikt vanaf de lokale ontwikkelserver, daarom eerst nog wat hoe je verbinding kunt maken met deze ontwikkelserver om een subversion project uit te checken. Iedereen binnen Adwise heeft toegang tot de lokale ontwikkelserver. Je kunt inloggen met je voornaam (in sommige gevallen wijkt dit af!) en je standaard wachtwoord. Om in te kunnen loggen heb je Putty nodig. Met putty kun je een veilige verbinding maken met de ontwikkelserver (via SSH). Je kunt Putty vinden op de Adwise-Server \\adwise-server \data\Software\Putty Hierin staat een bestandje met de naam “Putty.exe” . Kopieer dit bestandje bv. naar je bureaublad van je computer. Als je vervolgens dit bestand opent dan krijg je een scherm als deze
Bovenin bij “Hostname” vul je “ontwikkel.adwise.local” en om dit niet elke keer te hoeven doen kun je bij “Saved sessions” een naam invullen (bv. “ontwikkelserver”) en daarna druk je op “save” . Dubbelklik nu op “ontwikkelserver” en er opent zich een zwart scherm en de eerste keer krijg je een vraag welke je met “ja” of “yes” moet beantwoorden. In het zwarte scherm word gevraagd naar je “login” en dat is je naam. Vul daarna je wachtwoord in (je hebt 3 pogingen). Als je goed ingelogd bent kom je in je home directory op de ontwikkelserver (iedereen heeft een eigen mapje op de ontwikkelserver). Websites kun je plaatsen in de “public_html” map. Je kunt de public html map ingaan door “cd public_html/” te typen Tip: bij het typen van “cd” commando’s kun je op elk moment de tab-toets gebruiken om je mapnamen automatisch aan te laten vullen. Vanuit hier kun je verder met subversion en het uitchecken van projecten. Op command-line zijn 2 variabelen beschikbaar, 1 voor elke repository. We gebruiken $SVN in verdere voorbeelden. $SVN $PJSVN
svn+ssh://{name}@adwisevds.oxilion.nl/var/svn-repos/adwise-cms svn+ssh://{name}@adwisevds.oxilion.nl/var/svn-repos/projects
Pagina 3 van 6
Howto Subversion 3. Uitchecken bestaand project Om projecten uit te checken voer je het volgende commando uit svn co $SVN/branches/{project-name} Stel dat we het project “keessmit.nl” willen uitchecken, dan word het commando svn co $SVN/branches/keessmit.nl Na op enter gedrukt te hebben word het project uit de repository gehaald en word geplaatst in de lokale map die gelijk is aan de project naam, in dit geval dus “keessmit.nl”. Eventueel kun je nog een lokale mapnaam opgeven door achter “keessmit.nl” een spatie met een afwijkende naam te gebruiken, dit is normaal gesproken niet nodig.
4. Wijzigingen committen naar de server Als je wijzigingen hebt aangebracht moet deze wijzigingen committen naar de server zodat deze door andere medewerkers eventueel weer uitgecheckt kunnen worden en zodat de wijzigingen bewaard blijven. Er zijn voordat je iets kunt committen naar de server een aantal stappen die je moet doorlopen. 1. Voer eerst het status commando uit om te zien of je conflicten hebt veroorzaakt, nieuwe bestanden hebt toegevoegd of bestanden hebt verwijderd. svn stat Je kunt de volgende status regels verwachten ! ? M A D
pad/naar/bestand.php pad/naar/bestand.php pad/naar/bestand.php pad/naar/bestand.php pad/naar/bestand.php
De “!” staat voor een bestand dat wel bestond maar is verwijderd en nog niet verstuurd naar de server. De “?” staat voor een bestand dat nieuw is en nog niet bestaat op de server. Als er een “M”, “A” of “D” staat dan houd dat in dat het bestand gewijzigd is (Modified), is togevoegd (Added) of is verwijderd (Deleted). Bij alle andere resultaten verhaal gaan halen bij een developer/Bert. Bestanden met een “!” moet je kenmerken als verwijderd svn rm pad/naar/bestand.php Met een “?” moet je toevoegen aan subversion svn add pad/naar/bestand.php De rest kun je laten voor wat het is, deze zijn goed ingesteld!
Pagina 4 van 6
Howto Subversion 2. Nadat je de status hebt gecontroleerd moet je een update commando uitvoeren om er zeker van te zijn dat de laatste versie hebt. svn up 3. Als dit geen conflicten oplevert kun je de wijzigingen naar de server committen svn commit Je kunt ook afzonderlijke bestanden committen door achter het commando het pad van het bestand op te nemen (of meerdere bestanden, gescheiden door een spatie) svn commit pad/naar/bestand.php svn commit pad/naar/bestand1.php pad/naar/bestand2.php Tip: om bestandspaden te kopieren en plakken kun je in putty simpel de tekst selecteren (dan word hij al gekopieerd) en met de rechtermuis plakken op de plek waar je cursor is (aan het eind van het getypte commando!) 4. Je moet bij elke commit die je doet een berichtje typen, dit hoeft maar 1 zin te zijn, als het maar een zinvolle tekst bevat, dus geen tekst als “modified” of “removed”. Maar duidelijk globaal omschrijven wat je gedaan hebt, en dat in het Engels! Je tekst type je in nadat je het commit commando hebt uitgevoerd. Als je commentaar bij je commit klaar is, dan sluit je af middels de sneltoetsen “control + x” (afsluiten), daarna tik je de “y” (opslaan) toets aan en druk je op enter om te bevestigen. 5. Wacht op een melding dat je alles gecommit hebt, deze ziet er ongeveer zo uit Commited revision 645
5. Nieuw project starten Bij het starten van een nieuw project moet je vanuit de hoofdmap “tags” de laatste versie ophalen. Dit kun je doen door het volgende commando uit te voeren svn ls $SVN/tags Hiermee krijg je een lijst met versienummers terug, zoek het meest laatste versienummer op. Stel dat het laatste nummer 1.5 is, dan gaan we die gebruiken voor het nieuwe project. Dit versienummer geeft aan dat 1.5 de meest laatste versie is die stabiel draait. Alle projecten in subversion moeten opgeslagen worden onder de domeinnaam van de klant, dus stel dat we het project voor Kees Smit moeten aanmaken, dan zou de naam in subversion zijn “keessmit.nl”. Middels het volgende commando kun je de laatste versie van het CMS kopiëren naar de projectmap voor Kees Smit. svn cp $SVN/tags/1.5 $SVN/branches/keessmit.nl Hierna kun je het project uitchecken zoals in hoofdstuk 3 is omschreven. Pagina 5 van 6
Howto Subversion 6. Per ongeluk verwijderde bestanden terughalen Het kan iedereen gebeuren dat je per ongeluk bestanden of zelfs hele mappen weggegooid hebt die niet weg hadden gemoeten. Met subversion is dit nog niet zo’n ramp. Als je verwijderde bestanden wilt terughalen kun je het udpate commando uitvoeren. svn up Mocht je aangepaste bestanden terug willen zetten (omdat bv. jouw aanpassing niet goed is) kun je het revert commando van subversion gebruiken svn revert pad/naar/bestand.php of svn revert pad/naar/map/
7. TortoiseSVN in plaats van Putty command line Mocht je niet zo’n fan zijn van command line, dan zijn er ook tooltjes verkrijgbaar via internet waar je door middel van Windows muis-menu’s kunt werken met subversion. Deze software is ook te vinden op de Adwise server \\adwise-server \data\Software\TortoiseSVN Installeer de versie (32 of 64 bit) die voor jouw computer van toepassing is.
Pagina 6 van 6