Importer des données dans un référentiel

Importer

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

Cette section décrit la commande Importer, qui a été faite pour importer une arborescence de répertoires dans le référentiel en une action. Bien que cette commande fonctionne, elle a quelques 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 référentiel.

Pour ces raisons nous recommandons d'utiliser la méthode en deux étapes décrite dans : la section intitulée « Importer en place » au lieu de cette commande . Mais puisque vous êtes là, c'est le fonctionnement de la commande Importer...

Avant que vous n'importiez votre projet dans un référentiel, 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. Le boîte de dialogue Importer

Le boîte de dialogue Importer


Dans la boite de dialogue, vous devez entrer l'URL du référentiel dans lequel vous souhaitez importer le projet. Il est important de comprendre que le répertoire local que vous importez n'apparaitra pas dans le référentiel, mais juste son contenu.Par exemple, si vous avez la structure suivante :

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

et que vous importez C:\Projects\Widget dans http://monnomdedomaine.com/svn/trunk vous serez alors surpris de voir que vos sous répertoires iront directement dans trunk au lieu d'être dans un répertoire Widget. Vous devez spécifier le sous répertoire comme faisant partie de l'URL, http://monnomdedomaine.com/svn/trunk/Widget-X. Notez que la commande importer créera automatiquement les sous répertoires dans le référentiel s'ils n'existent pas.

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 référentiel l'arborescence complète des répertoires, fichiers compris. Le projet est maintenant sous contrôle de version dans le référentiel. 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 référentiel, et que vous souhaitez y ajouter une nouvelle arborescence, suivez les étapes suivantes :

  1. Utiliser l'explorateur de référentiel pour créer un nouveau projet directement dans le référentiel.

  2. Extrayez le nouveau répertoire parent du répertoire que vous voulez importer. Un message va s'afficher, indiquant que le répertoire n'est pas vide. Vous disposez maintenant d'un répertoire parent versionné, dont le contenu n'est pas sous contrôle de version.

  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.

Comme exemple, vous pouvez regarder le script de construction de TortoiseSVN. Il appelle un fichier nommé TortoiseVars.bat qui n'existe pas dans le référentiel, seul le fichier TortoiseVars.tmpl y est. Ce denier sert de modèle afin que chaque développeur créée son propre TortoiseVars.bat. À l'intérieur de ce fichier, nous avons ajouté des commentaires pour que les utilisateurs voient quelles lignes ils doivent éditer et changer selon leur paramétrage local pour qu'il fonctionne.

Afin de ne pas déranger les utilisateurs, nous avons aussi ajouté le fichier TortoiseVars.bat à la liste des ignorés de son dossier parent, c'est-à-dire que nous avons mis la propriété Subversion svn:ignore pour inclure ce nom de fichier. De cette façon il n'apparaîtra pas comme non versionné à chaque livraison.