Data Importeren In Een Archief

Importeren

Als je data importeert in een bestaand archief waarin al enkele projecten aanwezig zijn, dan is de structuur van het archief al vastgesteld. Als je gegevens importeert in een nieuw archief, dan is het de moeite waard om even goed na te denken over de structuur van het archief. Lees de paragraaf met de naam “Archief indeling” voor advies hierover.

This section describes the Subversion import command, which was designed for importing a directory hierarchy into the repository in one shot. Although it does the job, it has several shortcomings:

  • Het is niet mogelijk om aan te geven welke bestanden en mappen geïmporteerd moeten worden, behalve dan door het gebruik van globale negeer instellingen.

  • De geïmporteerde map wordt geen werkkopie. Je moet het Ophalen commando gebruiken om weer een kopie van de bestanden van de server te halen.

  • Het importeren vanaf een verkeerd mapniveau gaat erg makkelijk.

For these reasons we recommend that you do not use the import command at all but rather follow the two-step method described in de paragraaf met de naam “Invoeren op zijn Plaats”, unless you are performing the simple step of creating an initial /trunk /tags /branches structure in your repository. Since you are here, this is how the basic import works ...

Voordat je je project in het archief importeert, moet je:

  1. Alle bestanden verwijderen die niet nodig zijn om het project te bouwen (tijdelijke bestanden, bestanden die door een compiler gemaakt worden bijv. *.obj, gecompileerde binaire bestanden,...)

  2. De bestanden in mappen en sub-mappen sorteren. Ondanks dat het mogelijk is om bestanden te hernoemen of verplaatsen, is het verstandig om je projectstructuur in één keer goed te hebben voordat je importeert.

Selecteer nu in de Windows verkenner de hoofdmap van je project mapstructuur en klik met rechts om het context menu te openen. Selecteer TortoiseSVNImporteren... waardoor dit venster wordt geopend:

Afbeelding 4.5. Het invoer venster

Het invoer venster


In this dialog you have to enter the URL of the repository location where you want to import your project. It is very important to realise that the local folder you are importing does not itself appear in the repository, only its content. For example if you have a structure:

C:\Projects\Widget\source
C:\Projects\Widget\doc
C:\Projects\Widget\images
      

and you import C:\Projects\Widget into http://mydomain.com/svn/trunk then you may be surprised to find that your subdirectories go straight into trunk rather than being in a Widget subdirectory. You need to specify the subdirectory as part of the URL, http://mydomain.com/svn/trunk/Widget-X. Note that the import command will automatically create subdirectories within the repository if they do not exist.

Het import bericht wordt gebruikt als bericht in het logboek.

Bestanden en mappen die het overeen komen met de globale-negeren patronen worden niet geïmporteerd.Om dit gedrag te omzeilen kun je de optie Genegeerde bestanden meenemen selecteren. Lees de paragraaf met de naam “Algemene instellingen” voor meer informatie voor het instellen van een globaal negeren patroon.

Zodra je op OK klikt zal TortoiseSVN de complete mapstructuur inclusief alle bestanden in het archief importeren. Het archief is nu in het archief met versiebeheer opgeslagen. Merk op dat de map die je geïmporteerd hebtNIET nog geen versiebeheer heeft. Om een werkkopie met versiebeheer te krijgen moet je eerst nog het project nog Ophalen uit het archief. Of lees verder om te weten te komen hoe je een map direct in versiebeheer opneemt.

Invoeren op zijn Plaats

Als je al een archief hebt en je daar een nieuwe mapstructuur aan wilt toevoegen, volg dan deze stappen:

  1. Use the repository browser to create a new project folder directly in the repository. If you are using one of the standard layouts you will probably want to create this as a sub-folder of trunk rather than in the repository root. The repository browser shows the repository structure just like Windows explorer, so you can see how things are organised.

  2. Checkout the new folder over the top of the folder you want to import. You will get a warning that the local folder is not empty. Ignore the warning. Now you have a versioned top level folder with unversioned content.

  3. Gebruik de optie TortoiseSVNToevoegen... op deze map met versiebeheer om bepaalde of alle inhoud toe te voegen. Je kunt bestanden toevoegen en verwijderen, svn:ignore eigenschappen instellen op mappen en andere wijzigingen die je nodig hebt.

  4. Leg de hoofmmap vast (SVN Vastleggen) en je hebt een nieuwe mapstructuur met versiebeheer en een lokale werkkopie gemaakt van je bestaande map.

Speciale Bestanden

Soms wil je een bestand van versiebeheer voorzien, waarin gebruiker specifieke data staat. Dat houdt dat je een bestand hebt die elke ontwikkelaar/gebruiker aan zijn/haar lokale instellingen wil aanpassen. Het is lastig om zo'n bestand van versiebeheer te voorzien, want elke gebruiker zou zijn/haar wijzigingen telkens opslaan in het archief.

In zulke situaties bevelen we het gebruik van sjablonen aan. Maak een bestand aan met alle gegevens die je gebruikers nodig hebben. Sla het bestand op in het archief en laat de ontwikkelaars het bestand ophalen. Vervolgens moet elke ontwikkelaar een kopie maken en deze hernoemen. Daarna levert het wijzigen van het bestand geen problemen meer op.

As an example, you can have a look at TortoiseSVN's build script. It calls a file named default.build.user which doesn't exist in the repository. Only the file default.build.user.tmpl. default.build.user.tmpl is the template file which every developer has to create a copy from and rename that file to default.build.user. Inside that file, we added comments so that the users will see which lines they have to edit and change according to their local setup to get it working.

So as not to disturb the users, we also added the file default.build.user to the ignore list of its parent folder, i.e. we've set the Subversion property svn:ignore to include that filename. That way it won't show up as unversioned on every commit.