SVN (WebCie)

From A-Eskwiki
Revision as of 18:57, 22 September 2012 by Otto (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

SVN (Subversion) is het magische systeem waarmee we controle houden op wat er gebeurd met alle WebCie-code. Ieder WebCie-lid heeft een kopie (een checkout) van het volledige systeem staan op zijn eigen account (in de map ~/wwwdebug). Deze code bepaalt wat jij te zien krijgt in je browser als je naar je persoonlijke debugpagina gaat (lijkt op http://blabla.debug.a-eskwadraat.nl). Als je wijzigingen in deze code aanbrengt, veranderen dus alleen de pagina's op jouw persoonlijke debug-omgeving. Dat noemen we een sandbox, het zorgt er voor dat je rustig je code kan ontwikkelen zonder dat de rest van de WWW daar last van heeft. Bovendien is jouw debugpagina alleen benaderbaar door WebCie-leden, dus als je per ongeluk lekkende SQL-queries schrijft is dat geen ramp.

Op deze pagina staat basale info om aan de slag te gaan met SVN.

svn up

Met svn up zorg je ervoor dat je locale versie geupdate wordt met alle wijzigingen die de rest van de WebCie heeft aangebracht. Doe dit dus altijd voordat je begint met hekken, anders wijzig je misschien dingen die al door anderen gewijzigd zijn en bestaat de kans op collisions!

Typische output van een svn update:

[otto@nikola]~/wwwdebug$ svn up
U    www/WhosWho4/Controllers/Activiteiten.php
U    www/WhosWho4/Activiteit.view.php
U    www/WhosWho4/Deelnemer.cls.php
U    www/WhosWho4/Lid.view.php

Fetching external item into 'libdb'
External at revision 75.


Fetching external item into 'gettext/voc'
External at revision 153.

At revision 12329.

svn st

Met svn st vraag je de huidige status op van jouw lokale kopie.

[otto@nikola]~/wwwdebug$ svn st
X       libdb
    S   gettext
X       gettext/voc
    S   www
M       www/WhosWho4/Activiteit.view.php
M       www/javascript/Activiteit/Wijzig.js
    S   lib
    S   scripts
M       scripts/script-init.php
    S   docs

Performing status on external item at 'libdb'

Performing status on external item at 'gettext/voc'

Je ziet een lijstje met wijzigingen. Je kan de items met een X of een S ervoor negeren, evenals scripts/script-init.php.

We concluderen dat de bestanden www/WhosWho4/Activiteit.view.php en www/javascript/Activiteit/Wijzig.js gewijzigd zijn.

svn diff

Met svn diff bekijk je alle wijzigingen die er zijn tussen jouw lokale kopie en de huidige revisie. Gebruik svn diff bestand1 bestand2 ... om de wijzigingen van een of meer bestanden te bekijken.

Met plusjes en minnetjes wordt er weergegeven welke regels weggehaald zijn en welke er bij zijn gekomen.

svn ci

Als je tevreden bent met de wijzigingen die svn diff je voorgeschoteld hebt, kan je je werk committen met svn ci. Ook hier kan je weer losse bestanden mee pakken door die erachter te zetten zoals bij diff. Je komt dan in nano terecht, en er staat welke bestanden je op het punt staat te committen.

Schrijf een duidelijke omschrijving van wat jouw commit bewerkstelligd, anders wordt de rest van de WebCie boos! Vervolgens ram je op Ctrl-X en Y, en hopla jouw wijzigingen worden opgenomen in het centrale systeem. Als jouw collega's svn uppen krijgen ze dus jouw code!

Overig

  1. svn add bestand - gebruik dit als je een volledig nieuw bestand hebt gemaakt. Nu wordt deze ook meegenomen bij je svn status, diffs en commits!
  2. svn revert bestand - als je een chaos van een bestand hebt gemaakt, reset je hem hiermee weer naar de versie zoals die centraal geadministreerd stond.

Collisions

Als je dit ziet, ben je de sjaak:

[otto@nikola]~/wwwdebug$ svn up
U    www/WhosWho4/Controllers/Activiteiten.php
U    www/WhosWho4/Activiteit.view.php
U    www/WhosWho4/Deelnemer.cls.php
U    www/WhosWho4/Lid.view.php
U    www/WhosWho4/Contact.cls.php
Conflict discovered in 'www/WhosWho4/Persoon.view.php'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options:

Je hebt dan wijzigingen aangebracht in een bestand dat inmiddels door iemand anders is gewijzigd en gecommit, en deze wijziging botst met die van jouw. Wederom een reden om vaak svn up te doen!

Neem de tijd om even te kijken wat het probleem is (de commit van je collega staat in je mail), je kan expliciet het probleem zien door df (diff full) te typen.

Dan concludeer je meestal dat je collega gelijk heeft, en jouw wijziging genegeerd moet worden. Kies daarvoor tf (theirs-full). Je bestand wordt dan volledig geoverride, wat meestal de bedoeling is.

Schakel indien nodig een ervarener WebCie-er in.