Hoofdstuk 3. Het Archief

Inhoudsopgave

Archief creatie
Een archief aanmaken via de opdrachtregel applicatie.
Het Archief Aanmaken Met TortoiseSVN
Lokale Toegang tot het Archief
Een archief benaderen op een Netwerk schijf
Archief indeling
Archief Reservekopie
Server gesitueerde hook scripts
Links voor Ophalen
Toegang hebben tot het Archief

Onafhankelijk van welk protocol er gebruikt wordt om een archief te benaderen, tenminste één keer moet het archief aangemaakt worden. Dit kan gedaan worden met via een Subversion opdracht scherm of met TortoiseSVN.

Als je nog geen Subversion archief aangemaakt hebt, dan wordt het nu tijd om dat te doen.

Archief creatie

Een archief aanmaken via de opdrachtregel applicatie.

  1. Maak een lege map aan met de naam SVN (bijv. D:\SVN\), welke gebruikt zal worden als basis map voor alle archieven.

  2. Maak nog een map aan MyNewRepository in D:\SVN\.

  3. Open the command prompt (or DOS-Box), change into D:\SVN\ and type

    svnadmin create --fs-type fsfs MyNewRepository
              

Nu is er een nieuw archief gemaakt in D:\SVN\MyNewRepository.

Het Archief Aanmaken Met TortoiseSVN

Afbeelding 3.1. Het TortoiseSVN menu voor bestanden zonder versiebeheer

Het TortoiseSVN menu voor bestanden zonder versiebeheer

  1. Open de Windows Verkenner

  2. Maak een nieuwe map aan en noem het bijvoorbeeld SVNRepository

  3. <action>Klik met de rechter muisknop</action> op de nieuwe map en selecteer <menuchoice><guimenu>TortoiseSVN</guimenu><guimenuitem>Maak hier een archief...</guimenuitem></menuchoice>.

    In de nieuwe map wordt dan een archief gemaakt. Bewerk of wijzig deze bestanden niet zelf!!!. Als je foutmeldingen krijgt, controleer dan of de map leeg is en of je schrijfrechten hebt.

    You will also be asked whether you want to create a directory structure within the repository. Find out about layout options in de paragraaf met de naam “Archief indeling”.

    TortoiseSVN will set a custom folder icon when it creates a repository so you can identify local repositories more easily. If you create a repository using the official command line client this folder icon is not assigned.

Tip

We also recommend that you don't use file:// access at all, apart from local testing purposes. Using a server is more secure and more reliable for all but single-developer use.

Lokale Toegang tot het Archief

Om een lokaal archief te benaderen, moet je het pad naar de map weten. Onthoudt dat Subversion alle paden naar het archief verwacht in het formaat: file:///C:/SVNRepository/.Merk op dat er normale schuine strepen worden gebruikt.

Om een archief op een netwerk te benaderen, kan een schijfletter toegewezen worden of door gebruik te maken van het UNC pad. Voor UNC paden moet het formaat file://ServerName/path/to/repos/ gebruikt worden. Merk op dat er maar 2 schuinen strepen voor staan.

Voordat SVN 1.2 er was, moesten UNC paden op een onduidelijkere manier opgegeven worden file:///\ServerName/path/to/repos. Dit formaat wordt nog wel ondersteund, maar het gebruik wordt niet aanbevolen.

Een archief benaderen op een Netwerk schijf

Although in theory it is possible to put a FSFS repository on a network share and have multiple users access it using file:// protocol, this is most definitely not recommended. In fact we would strongly discourage it, and do not support such use for various reasons:

  • Ten eerste geef je elke gebruiker directe schrijf rechten op het archief, zodat iedereen per ongeluk het hele archief weg kan gooien of het op een andere manier onbruikbaar kan maken.

  • Ten tweede ondersteund niet elke netwerk bestandsgebruik protocol de manier van vergrendelen die Subversion nodig heeft, waardoor je archief mogelijk onbruikbaar wordt. Dit hoeft niet direct te gebeuren, maar bijvoorbeeld op een moment dat twee gebruikers het archief tegelijkertijd benaderen.

  • Ten derde moeten de permissies exact ingesteld worden, wat misschien nog net lukt met Windows, maar met SAMBA is dit erg lastig.

  • Als een gebruiker een nieuwere versie van de cliënt installeert welke het repository formaat bijwerkt naar een nieuwere versie. Dan moeten de andere gebruikers ook upgraden naar de nieuwe cliënt versie om gebruik te kunnen maken van de repository.

file:// gebruik is bedoeld voor lokaal gebruik met een enkele gebruiker, in het bijzonder voor testen en debuggen. Als je het archief wilt delen, dan moet je echt een server opbouwen, wat niet zo moeilijk is als je denkt. Lees de paragraaf met de naam “Toegang hebben tot het Archief” voor richtlijnen bij het kiezen en opzetten van een server.

Archief indeling

Voordat je je data in het archief opneemt, moet je nadenken hoe je de indeling wilt hebben. Als je één van de aanbevolen indelingen kiest, zul je dat later veel profijt van hebben.

Er zijn een paar standaard aanbevolen indelingen voor een archief. Vaak wordt er een trunk map aangemaakt voor de basislijn van de ontwikkeling, een branches map voor vertakkingen en een tags map voor labels (vrijgaves). Als een archief maar één project bevat, worden van deze mappen op hoofdniveau gemaakt:

/trunk
/branches
/tags
    

Because this layout is so commonly used, when you create a new repository using TortoiseSVN, it will also offer to create the directory structure for you.

Als een archief meerdere projecten bevat, wordt er vaak voor een indeling per vertakking gekozen:

/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
    

...of per project:

/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
    

Indexeren per project heeft zin als de projecten niet veel met elkaar te maken hebben en elk project afzonderlijk opgehaald wordt uit het archief. Voor projecten die je in één keer wilt ophalen of die met elkaar verbonden zijn in een enkele distributie is het vaak om te indexeren per vertakking. Hiermee hoef je alleen de basislijn (trunk) op te halen en de relaties tussen de projecten zijn eenvoudiger te zien.

Als de /trunk /tags /branches aanpak op hoofdniveau toepast, moet je de hele boomstructuur kopiëren voor elke vertakking en label, en in sommige andere gevallen biedt deze structuur juist de meeste flexibiliteit.

Voor projecten zonder onderlinge relatie heb je mogelijk de voorkeur voor afzonderlijke archieven. Als je wijzigingen vastlegt, wordt het revisienummer van het gehele archief verhoogd, niet het nummer van een project. Het hebben van twee ongerelateerde projecten in één archief betekend dat er grote sprongen kunnen zitten in de revisienummers. De Subversion en TortoiseSVN projecten bevinden zich op hetzelfde hostadres, maar zijn twee aparte archieven waarmee onafhankelijk ontwikkeld kan worden, en dus geen verwarring over build nummers.

Natuurlijk ben je vrij om deze standaard indelingen te negeren. Je kunt elke gewenste variatie creëren, net welke jou en je team het beste past. Onthoudt dat wat je ook kiest, je er niet voor eeuwig aan vast zit. Het is mogelijk om je archief te reorganiseren op elke gewenst moment. Omdat vertakkingen en labels normale mappen zijn, kan TortoiseSVN deze voor je verplaatsen of hernoemen naar hartenlust.

Het schakelen van de ene naar de andere indeling is simpel een door de server uitgevoerde verplaatsactie; Mocht je de indeling van het archief niet handig vinden, verplaats de mappen naar hartenlust.

Als je nog geen basis mapstructuur structuur in het archief hebt aangemaakt, doe dat dan nu. Er zijn twee methodes om dit te doen. Als je de /trunk /tags /branches structuur wilt aanmaken, dan kun je de archief-verkenner hiervoor gebruiken (door drie keer apart vastleg acties). Als je een dieper hiërarchische structuur wilt maken, dan is het makkelijker om dat eerst op de schijf te doen en deze structuur dan in één keer te importeren, door:

  1. creëer een nieuwe lege map op je harde schijf

  2. Maak je gewenste mapstructuur in die map aan – sla er nog geen bestanden in op!

  3. import this structure into the repository via a right click on the folder that contains this folder structure and selecting TortoiseSVNImport... In the import dialog enter the URL to your repository and click OK. This will import your temp folder into the repository root to create the basic repository layout.

Note that the name of the folder you are importing does not appear in the repository, only its contents. For example, create the following folder structure:

C:\Temp\New\trunk
C:\Temp\New\branches
C:\Temp\New\tags
      

Import C:\Temp\New into the repository root, which will then look like this:

/trunk
/branches
/tags