• De afgelopen dagen zijn er meerdere fora waarop bestaande accounts worden overgenomen door spammers. De gebruikersnamen en wachtwoorden zijn via een hack of een lek via andere sites buitgemaakt. Via have i been pwned? kan je controleren of jouw gegeven ook zijn buitgemaakt. Wijzig bij twijfel jouw wachtwoord of schakel de twee-staps-verificatie in.

Versiebeheer met Subversion

Wat vind je van deze handleiding?

  • Ik gebruik het nu ook

    Stemmen: 0 0,0%
  • Ik snap het niet

    Stemmen: 0 0,0%

  • Totaal aantal stemmers
    7
Status
Niet open voor verdere reacties.

D Drmmr

Heeft veel posts
Lid geworden
5 jul 2005
Berichten
13.482
Waarderingsscore
151
[hand]
Versiebeheer met Subversion

<hr>
[kopje]Naar boven[/kopje]
Inhoud

  • [linkje]Introductie[/linkje]
  • [linkje]Installatie[/linkje]
  • [linkje]Een repository maken[/linkje]
  • [linkje]Gebruik voor jezelf[/linkje]
  • [linkje]Gebruik in een team[/linkje]

Dingen die nog toegevoegd kunnen worden:
  • Installatie op een lokale server
  • Delen via internet (geen idee of dat mogelijk is?)
  • Het maken/samenvoegen van een branch
  • Conflicten oplossen met TortoiseMerge
Wil je een stuk toevoegen? Stuur me dan even een PB.


<hr>

[kopje]Introductie[/kopje]


Subversion is een open-source project dat een goed alternatief wil bieden aan CVS voor een versiebeheersysteem. De software is gratis te downloaden op http://subversion.tigris.org/.

Versiebeheer is een manier om de veranderingen die gemaakt worden aan bestanden bij te houden en te delen met verschillende mensen. Het is onmisbaar voor teams die gezamenlijk aan software, websites of iets dergelijks werken. Ook als je niet in een team werkt, kan het heel handig zijn om al je wijzigingen bij te houden.

Het idee achter Subversion (en vele andere versiebeheersystemen) is dat er n centrale plek is waar alle bestanden worden bijgehouden. Dit wordt de repository genoemd. Op het moment dat er wijzigingen aan een bestand worden gemaakt, wordt zowel de nieuwe versie in de repository opgeslagen als de oude bewaard. Hierdoor is het mogelijk om alle wijzigingen die zijn gemaakt te bekijken of terug te draaien.

Als je met de bestanden wilt werken, maak je eerst een lokale kopie. Deze kopie kun je gebruiken, aanpassen, wat je maar wilt. Als je veranderingen hebt gemaakt, kun je deze in de repository invoeren ('committen'), zodat ze veilig zijn opgeslagen en anderen ervan gebruik kunnen maken door een laatste versie te nemen. Bij het nemen van een laatste versie worden de lokale kopien vervangen als er een nieuwere versie in de repository staat. Dit is dus alleen nodig als je in een team werkt.

Hiernaast biedt Subversion nog een aantal andere mogelijkheden. Een hele nuttige hiervan kan de mogelijkheid van een 'branch' (vertakking) zijn. Met een branch is het mogelijk om wijzigingen aan te brengen zonder dat die effect hebben op de "hoofdversie". Wijzigingen die worden aangebracht in de hoofdversie worden doorgevoerd naar de branch, maar niet andersom. Op deze manier kun je iets nieuws uitproberen zonder dat het nadelige effecten heeft op de website of het programma dat je moet onderhouden.


[linkje]Naar boven[/linkje]​
[/hand]
 
Laatst bewerkt door een moderator:
[hand]
[kopje]Installatie[/kopje]


De makkelijkste manier om Subversion te installeren is om een install package te downloaden van de Subversion website. Ga hiervoor naar http://subversion.tigris.org/, klik op 'Download' en scroll naar het gedeelte voor Windows (als je op een Windows pc wilt installeren, tenminste). Lees dit stuk even goed door.

Halverwege staat uitgelegd dat je het hele spul met een makkelijk installatieprogramma kunt downloaden (de download met -setup achter de naam). Klik op de link en download de laatste versie van Subversion (op dit moment "svn-1.4.4-setup.exe").

Net hierna staat een link naar TortoiseSVN. TortoiseSVN is een handige windows interface om gebruik te maken van Subversion. Het voegt wat dingen toe aan het contextmenu (rechts-klik menu) van windows verkenner (explorer), waarmee je toegang hebt tot Subversion. Download ook hiervan de laatste versie.

De installatie van zowel Subversion als van TortoiseSVN is recht-toe-recht-aan, dus ik neem aan dat dat wel lukt. De directory waar je Subversion in installeert, hoeft niet hetzelfde te zijn als de directory waar je straks je repository in wilt zetten. Het hoeft ook niet dezelfde schijf te zijn, maar wel dezelfde machine. ;)


[linkje]Naar boven[/linkje]​
[/hand]
 
Laatst bewerkt door een moderator:
[hand]
[kopje]Een repository maken[/kopje]


Het eerste dat je moeten doen na de installatie, is een repository maken. De repository kan op een server staan, maar ook gewoon op je lokale pc (ga ik hier van uit). Afhankelijk van wat voor en hoeveel bestanden je wilt opslaan, heb je een ruimte nodig van enkele tientallen MB's tot GigaBytes. Onthoud dat voor iedere keer dat je een wijziging maakt er een kopie van het betreffende bestand moet worden bijgehouden. Het is niet (of heel lastig) mogelijk om dingen uit de repository te verwijderen. Je kunt de bestanden wel verwijderen, maar de oude versies staan er nog altijd in. Gelukkig neemt broncode niet veel ruimte in beslag en kan het goed gecomprimeerd worden. Als je een repository wilt opzetten voor je eigen websites of programma's zul je aan 100 MB waarschijnlijk genoeg hebben voor de komende 10 jaar ofzo. ;)

De repository zal gaan bestaan uit een verzameling van bestanden, dus het is het makkelijkst om het in een eigen subdirectory te zetten, bijv. x:\svn_repository. Ga in explorer naar deze map en rechtsklik op de map of op een wit stuk als je in de map zit. Ga nu naar TortoiseSVN -> 'Create repository here...'. Er wordt nu gevraagd wat voor type je wilt maken (bestanden of database). Ik heb zelf gekozen voor bestanden (FSFS).

De repository is nu aangemaakt. Je kunt bekijken wat erin staat door op de directory van de repository te rechtsklikken en naar TortoiseSVN -> Repo-browser te gaan. De repository is nu nog leeg.

Het is trouwens mogelijk om meer dan n repository aan te maken. Je zou bijvoorbeeld voor websites en programma's aparte repositories kunnen maken, maar je kunt ze ook in n repository zetten. Het is niet handig om bijv. voor iedere website een repository te maken, omdat er ook dingen kunnen zijn die je tussen websites wilt delen (algemene scripts, database connectie, etc.).

Een indeling maken
Voordat je bestanden in de repository gaat zetten, is het goed om even na te denken over de indeling die je wilt gebruiken. Hierbij is de vuistregel dat het niet erg is om teveel subdirectories te maken, maar het wel lastig kan zijn als je er te weinig hebt. De algemene opvatting is dat het handig is om een 'trunk' directory te maken waarin je de hoofdversie van je bestanden zet. Je kunt dan andere directories maken voor bijv. branches als je die nodig hebt.
Zie ook http://svnbook.red-bean.com/en/1.0/ch05s04.html#svn-ch-5-sect-6.1.

Als je in een team werkt, is het ook makkelijk om een lege directory te maken met bijv. de naam 'empty'. Deze kun je gebruiken om bepaalde subdirectories in de repository over te slaan in je lokale kopie. Doe je dit niet dan worden ook deze directories gepdate als je een laatste versie neemt, terwijl je er misschien het liefst helemaal niks mee te maken wilt hebben.

Het aanmaken van een directory in je repository doe je door in de Repo-browser rechts te klikken en 'Create folder...' te selecteren. Wellicht wil je binnen je trunk directory nog een subdirectory maken. Vervolgens kun je de bestanden die je in de repository op wilt slaan importeren door te rechtsklikken en 'Add file...' of 'Add folder...' te selecteren. Je kunt nu een bestand of map selecteren die je aan de repository wilt toevoegen. Let erop dat als je een map toevoegt, je ook alle mappen en bestanden die erin staan mee toevoegt.

Een lokale kopie maken
Om met de bestanden in de repository te kunnen werken, moeten we een lokale kopie maken. Je kunt deze lokale kopie overal zetten. Wil je het op dezelfde plek zetten, als waar de bestanden al stonden op het moment dat je ze aan de repository toevoegde, dan is het het makkelijkst om de oude bestanden eerst te verwijderen.

Maak een map aan waarin je de lokale kopie wilt zetten (bijv. "src" of "websites"). Rechtsklik op deze map en selecteer 'SVN Checkout...'. Je krijgt nu een dialoog waarin je moet selecteren van welke directory in welke repository je een lokale kopie wilt maken. Selecteer de juiste directory en klik op OK. De bestanden uit de repository worden gekopieerd.

TortoiseSVN_Checkout.gif


Als je een lokale kopie hebt gemaakt, verschijnen er bij die mappen en bestanden extra icoontjes in windows verkenner. Deze icoontjes geven de status van iedere map of bestand aan. Een groen icoontje betekent dat je geen veranderingen hebt gemaakt aan het bestand. Dit wordt gecontroleerd middels de inhoud van het bestand. Dus als je een verandering maakt, het bestand opslaat, de verandering ongedaan maakt en het bestand weer opslaat, zal er weer een groen icoontje bij het bestand verschijnen. Een rood icoontje geeft aan dat je wel een verandering hebt gemaakt.

TortoiseSVN_icons.gif


De icoontjes die op de mappen staan geven de status aan van alle bestanden in die map. Er verschijnt een rood icoontje als n van de bestanden in die map (of een submap) een rood icoontje heeft. Alleen als ze allemaal groen zijn, wordt het icoontje van de map ook groen.


[linkje]Naar boven[/linkje]​
[/hand]
 
Laatst bewerkt door een moderator:
[hand]
[kopje]Gebruik voor jezelf[/kopje]


Veranderingen bekijken
Met de groene en rode icoontjes is het heel makkelijk om bij te houden welke bestanden je veranderd hebt. Om te kijken wat je precies in een bestand veranderd hebt, kun je gebruik maken van TortoiseMerge, een programma dat de verschillen tussen tekstbestanden kan aangeven. Rechtsklik hiervoor op het bestand dat veranderd is en selecteer TortoiseSVN -> Diff.

TortoiseSVN_Diff.gif


Onder de menubalk zie je twee groene pijlen staan. Hiermee kun je naar de vorige/volgende verandering. Je ziet dat het scherm is verdeeld in twee delen, de working base en de working copy. De working base is de versie die in de repository staat. De working copy is je lokale kopie. Onderaan zie je de gewijzigde regels staan. In dit geval is de bestandsnaam van een plaatje veranderd van .gif naar .jpg.

Veranderingen invoeren
Als je de veranderingen in een bestand hebt nagekeken en de wijzigingen wilt invoeren in de repository, moet je het bestand 'committen'. Je doet dit door te rechtsklikken op het bestand en 'SVN Commit...' te selecteren. Zijn er meerdere bestanden in een map gewijzigd dan kun je ze ook allemaal tegelijk committen, door op de map te rechtsklikken en 'SVN Commit...' te selecteren. Je krijgt dan een overzicht van de gewijzigde bestanden en kunt evt. bestanden die niet gecommit moeten worden unchecken (vinkje weghalen).

Veranderingen ongedaan maken
Als je veranderingen hebt gemaakt aan een bestand en deze ongedaan wilt maken, rechtsklik dan op het bestand en selecteer TortoiseSVN -> 'Revert...'. Je kunt dit ook weer voor een hele map tegelijk doen. Let er wel op dat je bij een revert de veranderingen die je gemaakt had ook echt kwijt bent, aangezien ze niet in de repository worden opgeslagen en je lokale kopie wordt overschreven.

Een bestand toevoegen
Als je een nieuw bestand aan de repository wilt toevoegen, maak dan eerst dit bestand aan in je lokale kopie. Rechtsklik op dit bestand en selecteer TortoiseSVN -> 'Add...'. Er verschijnt nu een blauw icoontje bij het bestand dat aangeeft dat je de repository hebt laten weten dat er een nieuw bestand is, maar de inhoud van dat bestand nog niet in de repository staat. Om de inhoud van het bestand ook in de repository te zetten, moet je het bestand comitten.

TortoiseSVN_Add.gif


Een bestand verwijderen
Om een bestand uit de repository te verwijderen, rechtsklik je op je lokale kopie en selecteer je TortoiseSVN -> 'Delete'. De lokale kopie wordt verwijderd, maar de map waar deze inzat blijft op een rood icoontje staan. Dit komt omdat je het verwijderen van het bestand nog moet committen. Dit kun je doen door de map te committen.

Een bestand hernoemen
Om een bestand in de repository te hernoemen, rechtsklik je op je lokale kopie en selecteer je TortoiseSVN -> 'Rename...'. Wat er in feite gedaan wordt, is dat het bestand met de oude naam wordt verwijderd en een bestand met de nieuwe naam wordt toegevoegd. Nadat je een bestand hebt hernoemd, zal er daarom een blauw icoontje op staan en moet je het bestand dus opnieuw comitten.


[linkje]Naar boven[/linkje]​
[/hand]
 
Laatst bewerkt door een moderator:
[hand]
[kopje]Gebruik in een team[/kopje]


Als je met een team van mensen aan een project werkt, is Subversion een hele goede manier om de gemaakte wijzigingen van ieder lid te beheren en te delen. Bovendien kun je opzoeken wie een bepaalde wijziging heeft gemaakt, zodat je diegene om meer uitleg kunt vragen, indien nodig. Het belangrijkste waar je op moet letten als je in een team werkt, is dat je altijd werkt met de laatste versie van de bestanden die je gebruikt.

Een laatste versie nemen
Met Subversion is het heel makkelijk om ervoor te zorgen dat je bestanden up-to-date zijn. Rechtsklik op de map met de bestanden die je wilt updaten en selecteer 'SVN Update'. That's it.

Als je bestanden hebt gewijzigd in je lokale kopie waarvan je de wijzigingen nog niet hebt ingevoerd, blijven deze wijzigingen gewoon in je lokale kopie staan. Het kan echter zijn dat iemand anders ook wijzigingen aan hetzelfde bestand heeft gemaakt en die wel al heeft ingevoerd (gecommit). In dat geval wordt er geprobeerd om de ingevoerde wijzigingen ook door te voeren in je lokale kopie. Als de veranderingen op verschillende plekken zijn, zal dit vrijwel altijd goed gaan. Maar het kan voorkomen dat de software niet kan beslissen hoe de ingevoerde wijzigingen moeten worden doorgevoerd in de lokale kopie. In dat geval onstaat er een conflict en zal er een geel icoontje bij het bestand verschijnen. Conflicten kun je oplossen met TortoiseMerge.

Een directory overslaan
Het is het makkelijkst als je van slechts n directory (waar alles in staat) een checkout maakt. Je hoeft dan namelijk alleen maar een update van die directory te nemen om van al je bestanden een laatste versie te verkrijgen. Het kan echter zijn dat er bepaalde subdirectories in de repository staan die je het liefst helemaal niet in je lokale kopie hebt staan, omdat je er toch niet mee werkt. Je kunt dit voor elkaar krijgen door die directory in je lokale kopie te laten verwijzen naar een lege directory in de repository. Rechtsklik hiervoor op de map in je lokale kopie die je leeg wilt maken en selecteer TortoiseSVN -> 'Switch...'. Kies vervolgens de lege directory in de repository en druk op OK. De map in je lokale kopie wordt nu leeggemaakt en zal voortaan ook bij het updaten leeg blijven.


[linkje]Naar boven[/linkje]​
[/hand]
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan