Subversion

Filosofie - Repository aanmaken - Client software - Spelen met Tortoise

Subversion (SVN) is een gratis versiecontrolesysteem voor programmeercode (of andere bestanden). Gebruikers delen bestanden in een repository op een centrale server. Drie dingen zijn nodig om met SVN te werken:
  1. De Subverion filosofie begrijpen.
  2. Een repository aanmaken op een server.
  3. Client software installeren en configureren.
  Klaar om je data te synchroniseren!!

Filosofie

Subversion vereenvoudigt het delen van bestanden. Het houdt ook al je oude versies bij (de history).

De bestanden worden opgeslagen in een repository op de server. Deze houdt de laatste versie van elk bestand bij (de HEAD), maar ook alle vorige versies. Je begint met het uitvoeren van een checkout, waardoor je een lokale folder linkt met de repository. De bestanden van de repository worden gedownload van de server. Daarna kan je deze bestanden bewerken.

Nieuwe bestanden worden naar de repository opgeladen aan de hand van het add commando. Het opladen van veranderingen in bestaande bestanden noemt men een commit. Het downloaden van veranderingen door anderen aan bestanden noemt men een update. Je eigen versies vergelijken met die van de server noemen we synchronization.




De enige moeilijkheid die zich kan voordoen is wanneer twee personen hetzelfde bestand hebben bewerkt.

In de figuur links, veronderstel dat Sally en Harry elk het - lokale - bestand A hebben bewerkt en dat Sally haar versie heeft gecommit. Wanneer Harry zijn versie wil committen veroorzaakt dit een out-of-date error.

Harry moet eerst zijn bestand actualiseren: hij moet Sally's veranderingen en de zijne samenvoegen. Dit noemt men een merge en wordt getoond in de figuur rechtst. Pas hierna kan hij het samengevoegde bestand committen.

De merge kan automatisch gebeuren tenzij Harry en Sally dezelfde lijnen hebben aangepast. In dat geval moet Harry de merge zelf uitvoeren. Dit noemt men conflict resolution. Merk op dat, zelfs als de merge automatisch kan gebeuren, het toch een goed idee is het resultaat nauwkeurig te bestuderen.


Repository aanmaken

Je kan vrij repositories aanmaken op de volgende locaties. Je zal een gebruiker, paswoord en URL krijgen die je later zal moeten gebruiken.

  RiouxSVN
  SourceForge

Deel met ons jullie ervaring met deze gratis SVN-servers!

Client Software

Je hebt software nodig om met de server te verbinden.

Voor Eclipse, is er de plugin Eclipse subversive te installeren in Eclipse via Help - Eclipse marketplace. Het is ons nog onduidelijk of dit in de PC-zalen kan...

TortoiseSVN, laat je toe de repository te synchroniseren vanuit Windows explorer. TortoiseSVN is geïnstalleerd in de PC-zalen waar de oefeningen doorgaan.

Spelen met Tortoise

TortoiseSVN is deel van het context menu van Windows Explorer. Om een project uit te checken, maak je een nieuwe folder aan, selecteer de de folder met de rechter muis toets en kies je checkout. Je zal gevraagd worden om een host URL, naam en paswoord.

Het is verstandig een lege folder te gebruiken!

Vanaf dan zie je een groen 'v'-symbool verschijnen op elk bestand of elke folder die gesynchroniseerd is met de repository.
In het context menu vind je de commit en update commando's. Bij elke commit kan je eventueel een commentaar toevoegen die de gemaakte veranderingen verduidelijkt.

Conflict Resolution
Als je een bestand tracht up te daten dat niet up-to-date is, krijg je een out-of-date error. Om deze op te lossen moet je synchroniseren: kies TortoiseSVN => Check for Modifications en dubbelklik op het samen te voegen bestand.

In het TortoiseMerge venster, zie je links de versie van de repository en rechts je eigen versie. Alle verschillen zijn aangegeven. Rechts kies je voor elke lijn wat je wil. Eens je alle conflicten heb opgelost, sluit het merge venster na je bestand te hebben bewaard. Geef vervolgens aan dat alle conflicten opgelost zijn door Resolved te kiezen uit het context menu. Voer tenslotte een commit uit.

Wanneer je een udpate doet, tracht Subversion je veranderingen automatisch samen te voegen met deze op de server. In het geval van conflicten zullen beide versies verschijnen in jouw bestand als volgt:
<<<<<<< .mine
* TORTOISE
=======
* == TORTOISE == *
>>>>>>> .r20
Eerst wordt jouw versie getoond en vervolgens deze van de server.
(Merk op dat Subversion ook copies maakt can beide versies ).
Kies wat je wil, markeer het bestand als opgelost en commit.




TIP: gebruik een visuele tool zoals WinMerge om twee bestanden of folders te vergelijken.