Chapitre 3. Le Dépôt

Table des matières

Création de dépôt
Créer un dépôt avec le client de ligne de commande
Créer le dépôt avec TortoiseSVN
Accès local au dépôt
Accéder à un dépôt situé dans un partage réseau
Disposition du dépôt
Sauvegarde de dépôt
Scripts de hook côté serveur
Liens d'extraction
Accéder au dépôt

Peu importe le protocole que vous utilisez pour avoir accès à vos dépôts, vous devez toujours créer au moins un dépôt. Cela peut être fait soit avec le client de ligne de commande de Subversion soit avec TortoiseSVN.

Si vous n'avez pas encore créé de dépôt Subversion, il est temps de le faire maintenant.

Création de dépôt

Vous pouvez créer un dépôt avec le backend FSFS ou avec le format de base de données Berkeley (BDB) plus ancien. Le format de FSFS est plus rapide et plus facile à gérer, il fonctionne maintenant sur les partages réseau et sous Windows 98 sans problème. Le format BDB est considéré comme plus stable car il est utilisé depuis plus longtemps ; cependant, FSFS est maintenant utilisé depuis plusieurs années, donc cet argument est dépassé. Lisez Choosing a Data Store dans le manuel de Subversion pour plus d'informations.

Créer un dépôt avec le client de ligne de commande

  1. Créez un dossier vide avec le nom SVN (par exemple D:\SVN\), qui est utilisé comme racine pour tous vos dépôts.

  2. Créez un autre dossier MonNouveauDépôt dans D:\SVN\.

  3. Ouvrez l'invite de commande (ou la boîte DOS), allez vers D:\SVN\ et tapez

    svnadmin create --fs-type bdb MonNouveauDépôt
    

    ou

    svnadmin create --fs-type fsfs MonNouveauDépôt
    

Maintenant vous avez un nouveau dépôt situé à D:\SVN\MonNouveauDépôt.

Créer le dépôt avec TortoiseSVN

Figure 3.1. Le menu TortoiseSVN pour les dossiers non versionnés

Le menu TortoiseSVN pour les dossiers non versionnés

  1. Ouvrez l'explorateur Windows

  2. Créez un nouveau dossier et nommez-le par exemple SVNDépôt

  3. Faites un clic droit sur le dossier nouvellement créé et sélectionnez TortoiseSVN Créer un dépôt ici ... .

    Un dépôt est alors créé à l'intérieur du nouveau dossier. N'éditez pas ces fichiers vous-même !!! Si vous avez des erreurs assurez vous que le dossier est vide et qu'il n'est pas protégé en écriture.

    Il vous sera également demandé si vous souhaitez créer une structure de répertoire dans le dépôt. Renseignez-vous sur les options de structuration ici : la section intitulée « Disposition du dépôt ».

    TortoiseSVN créera une icône de dossier personnalisé lors de la création d'un dépôt afin que vous puissiez identifier les dépôts locaux plus facilement. Si vous créez un dépôt en utilisant le client en ligne de commande, cette icône de dossier n'est pas créée.

Astuce

TortoiseSVN ne permet plus de créer des dépôts BDB, cependant vous pouvez toujours le faire en ligne de commande. Les dépôts FSFS sont généralement plus aisés à maintenir et, pour des raisons de compatibilité entre les différentes versions de BDB, nous permet de maintenir plus aisément TortoiseSVN.

TortoiseSVN ne supporte pas l'accès file:// pour les dsvn://, http:// ou https://.

Bien sûr, nous recommendons également de ne pas utiliser d'accès de type file://, hormis à des fins de test. Utiliser un serveur est plus sécurisé et plus fiable pour toute utilisation mutualisée.

Accès local au dépôt

Pour accéder à votre dépôt local vous avez besoin du chemin vers ce dossier. Souvenez-vous juste que Subversion s'attend à des chemins de dépôts dans la forme file:///C:/SVNDépôt/. Notez l'utilisation de slashs.

Pour avoir accès à un dépôt placé sur une partage réseau vous pouvez soit utiliser le mappage de disque, ou vous pouvez utiliser le chemin UNC. Pour les chemins UNC, la forme est file://NomDuServeur/chemin/vers/dépôt/. Notez qu'il y a seulement 2 slashs au début ici.

Avant SVN 1.2, les chemins UNC devaient être donnés dans la forme plus obscure file:///\NomDuServeur/chemin/vers/dépôt Cette forme est toujours supportée, mais n'est pas recommandée.

Avertissement

Ne créez pas ou n'accédez pas à un dépôt Berkeley DB sur un partage réseau. Il ne peut pas exister sur un système de fichiers distant. Même si vous mappez le disque réseau sur une lettre de disque. Si vous essayez d'utiliser Berkeley DB sur un partage réseau, les résultats seront imprévisibles - vous pouvez voir des erreurs mystérieuses tout de suite, ou il peut s'écouler des mois avant que vous ne découvriez que votre base de données du dépôt est corrompue.

Accéder à un dépôt situé dans un partage réseau

Au moins en théorie, il est possible d'utiliser un dépôt FSFS sur un partage réseau en utilisant le protocole file://, ce n'est certainement pas recommendé. En fait, nous le déconseillons fortement, et ne supportons pas un tel usage.

Premièrement vous donnez le droit d'accès en écriture dans le dépôt à tous les utilisateurs, de manière à ce qu'aucun ne puisse supprimer ou rendre complètement inutilisable de quelque manière que ce soit le dépôt.

Ensuite, tous les protocoles d'échange de fichiers ne supportent pas le verouillage dont Subversion a besoin, donc votre dépôt peut être corrompu. Ca ne devrait pas arriver tout de suite, mais un jour deux utilisateurs vont essayer d'accéder au dépôt en même temps.

Troisièmement, les droits des fichiers doivent être fixés exactement de cette manière. Vous pouvez vous en tirer sur un partage Windows, mais SAMBA est particulièrement compliqué.

Les accès de type file:// sont réservés à des fins de test et de debug ou pour une utilisation mono-utilisateur. Lorsque vous voulez partager votre dépôt vous devez vraiment mettre en place un vrai serveur, et ce n'est pas aussi compliqué qu'il n'y parait. Lisez la section intitulée « Accéder au dépôt » pour guider votre choix.

Disposition du dépôt

Avant que vous n'importiez vos données dans le dépôt vous devriez d'abord penser à la façon dont vous voulez organiser vos données. Si vous utilisez une des dispositions recommandées, ce sera beaucoup plus facile plus tard.

Il y a quelques standards, des manières recommandées d'organiser un dépôt. La plupart des personnes créent un répertoire trunk contenant la « version principale » de développement, un répertoire branches qui contient les copies de travail paralèlles et un répertoire tags qui contient les versions stables. Si un dépôt ne contient qu'un seul projet, ces répertoires sont créés à la base du dépôt :

/trunk
/branches
/tags

Parce que cette structure est la plus couramment utilisée, lorsque vous créez un nouveau dépôt avec TortoiseSVN, il vous proposera aussi de créer la structure de répertoire à votre place.

Si un dépôt contient de multiples projets, les gens indexent souvent leur disposition par branche :

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

...ou par projet:

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

L'indexation par projet a un sens si les projets ne sont pas étroitement liés et si chacun est extrait individuellement. Pour des projets liés où vous pouvez vouloir extraire tous les projets en une fois, ou où les projets sont tous liés ensemble dans un unique package de distribution, il est souvent mieux d'indexer par branche. De cette façon vous avez seulement un tronc à extraire et les relations entre les sous-projets sont plus facilement visibles.

Si vous adoptez une approche de niveau supérieur /trunk /tags /branches, il va sans dire que vous devez copier le tronc en entier pour chaque branche et chaque étiquette et d'une certaine façon, cette structure offre le plus de flexibilité.

Pour les projets sans rapport vous pouvez préférer utiliser des dépôts séparés. Quand vous livrez des changements, c'est le numéro de révision du dépôt entier qui change, pas le numéro de révision du projet. Avoir 2 projets sans rapport qui partagent un dépôt peut signifier de grands écarts dans les numéros de révision. Les projets Subversion et TortoiseSVN apparaissent à la même adresse hôte, mais sont des dépôts complètement séparés permettant le développement indépendant et aucune confusion sur les numéros de génération.

Bien sûr, vous êtes libre d'ignorer ces dispositions communes. Vous pouvez créer n'importe quel sorte de variation, ce qui marche le mieux pour vous ou votre équipe. Rappelez-vous que quoi que vous choisissez, ce n'est pas un engagement permanent. Vous pouvez réorganiser votre dépôt à tout moment. Parce que les branches et les étiquettes sont des répertoires ordinaires, TortoiseSVN peut les déplacer ou les renommer comme vous le souhaitez.

Passer d'une disposition à une autre ne revient qu'à exécuter une série de mouvements côté serveur ; si vous n'aimez pas la façon dont les choses sont organisées dans le dépôt, jonglez juste avec les répertoires.

Si vous n'avez pas encore créé la structure de base de votre dépôt, vous devriez le faire maintenant. Il y a deux manière de le faire. Si vous souhaitez simplement une structure /trunk /tags /branches, vous pouvez utiliser l'explorateur de dépôt pour créer les trois répertoires (dans trois livraisons différentes). Si vous souhaitez créer une arborescence plus complexe, il sera plus simple de le faire directement sur le disque puis de l'importer dans une seule livraison, comme suit:

  1. créez un nouveau répertoire vide sur votre disque dur

  2. créez votre structure de dossier de niveau supérieur désirée à l'intérieur de ce dossier - n'y mettez pas encore de fichiers !

  3. importez cette structure dans le dépôt via un clic droit sur le dossier qui contient cette structure de dossier et en choisissant TortoiseSVNImporter.... Dans la boîte de dialogue d'importation entrez l'URL de votre dépôt et cliquez sur OK. Cela importera votre dossier temporaire dans la racine du dépôt pour créer la structure de base du dépôt.

Notez que le nom du dossier que vous importez n'apparaît pas dans le dépôt, seulement son contenu. Par exemple, créez la structure de dossier suivante :

C:\Temp\Nouveau\trunk
C:\Temp\Nouveau\branches
C:\Temp\Nouveau\tags

Importez C:\Temp\Nouveau dans la racine du dépôt, qui ressemblera alors à cela :

/trunk
/branches
/tags