Importer des données dans un dépôt

Importer

Si vous importez des éléments dans un dépôt contenant déjà des projets, alors la structure du dépôt aura déjà été décidée. Si vous importez des éléments dans un nouveau dépôt alors il est temps de penser à la manière de l'organiser. Lisez la section intitulée « Disposition du dépôt » pour avoir des conseils.

Cette section décrit la commande import de Subversion, qui a été conçue pour importer la hiérarchie d'un dossier dans le dépôt d'un seul coup. Même si ça fait le boulot, cela a plusieurs défauts :

  • Il n'y a aucun moyen de sélectionner des éléments à inclure, à part en utilisant le filtre global des fichiers à ignorer.

  • Le répertoire importé ne devient pas une copie de travail. Vous devez faire une extraction pour en avoir une directement du serveur.

  • Il est aisé de se tromper de répertoire à importer dans le dépôt.

Pour ces raisons nous vous recommandons de ne pas utiliser du tout la commande import mais plutôt de suivre la méthode en 2 étapes décrite dans la section intitulée « Importer en place », sauf si vous faites la simple étape de création de la structure initiale /trunk /tags /branches dans votre dépôt. Puisque vous êtes là, voici comment l'import basique fonctionne ...

Avant que vous n'importiez votre projet dans un dépôt, vous devriez :

  1. Supprimez tous les fichiers qui ne sont pas nécessaires pour générer le projet (fichiers temporaires, fichiers produits par un compilateur par exemple *.obj, binaires compilés...)

  2. Organisez les fichiers en dossiers et sous-dossiers. Bien qu'il soit possible de renommer/déplacer les fichiers plus tard, il est fortement recommandé de fixer la structure de votre projet juste avant l'importation !

Choisissez maintenant le dossier de niveau supérieur de votre structure de répertoire de projet dans l'explorateur Windows et faite un clic droit pour ouvrir le menu contextuel. Choisissez la commande TortoiseSVNImporter... qui fait s'afficher une boîte de dialogue :

Figure 4.6. La boîte de dialogue Importer

La boîte de dialogue Importer


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.

Le message d'importation est utilisé comme un commentaire.

Par défaut, les fichiers et les dossiers qui correspondent au filtre d'exclusion ne sont pas importés. Pour ignorer ce comportement, vous pouvez utiliser la case à cocher Inclure les fichiers ignorés. Référez-vous à la section intitulée « Configuration générale » pour plus d'informations sur la configuration d'un filtre d'exclusion.

Dès que vous appuyez sur OK TortoiseSVN importe dans le dépôt l'arborescence complète des répertoires, fichiers compris. Le projet est maintenant sous contrôle de version dans le dépôt. Veuillez noter que le dossier que vous avez importé n'est PAS sous contrôle de version ! Pour obtenir une copie de travail sous contrôle de version, vous devez faire une extraction de la version que vous venez d'importer. Ou vous renseigner sur la manière d'importer un répertoire déjà en place.

Importer en place

Si vous disposez déjà d'un dépôt, et que vous souhaitez y ajouter une nouvelle arborescence, suivez les étapes suivantes :

  1. Utilisez le navigateur de dépôt pour créer un nouveau dossier de projet directement dans le dépôt. Si vous utilisez une des disposition standard, vous voudrez probablement créer cela comme un sous-dossier du tronc, plutôt qu'à la racine du dépôt. Le navigateur de dépôt montre la structure du dépôt juste comme l'explorateur Windows, afin que vous puissiez voir comment les choses sont organisés.

  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. Sélectionnez TortoiseSVNAjouter... sur le répertoire sous contrôle de version pour ajouter un ou des éléments. Vous pouvez ajouter ou supprimer des fichiers, activer les propriétés svn:ignore sur les répertoires et faire toutes les modifications dont vous avez besoin.

  4. Livrez le répertoire de plus haut niveau, et vous aurez une nouvelle arborescence versionnée, et une copie de travail locale, créée depuis votre répertoire existant.

Fichiers spéciaux

Parfois vous avez besoin d'avoir un fichier sous contrôle de version qui contient des données spécifiques aux utilisateurs. Cela signifie que vous avez un fichier que chaque développeur/utilisateur doit modifier pour convenir à son paramétrage local. Mais versionner un tel fichier est difficile car chaque utilisateur livrerait son propre fichier à chaque fois.

Dans de tels cas nous suggérons d'utiliser des fichiers templates. Vous créez un fichier qui contient toutes les données dont vos développeurs auront besoin, ajoutez ce fichier au contrôle de version et laissez les développeurs extraire ce fichier. Alors, chaque développeur doit faire une copie de ce fichier et la renommer. Après cela, modifier la copie n'est plus un problème.

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.