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

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. Ouvrir l'invite de commande (ou la DOS-Box), aller dans D:\SVN\ et taper

    svnadmin create --fs-type fsfs MyNewRepository
    

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

Nous vous recommandons également de ne pas utiliser l'accès file:// du tout, sauf pour des tests locaux. Utiliser un serveur est plus sécurisé et fiable pour toute utilisation comptant plus d'un développeur.

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.

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 et d'avoir un accès multi-utilisateurs en utilisant le protocole file://, ce n'est certainement pas recommandé. En fait, nous le déconseillons fortement, et ne supportons pas un tel usage pour diverses raisons :

  • 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é.

  • Si un utilisateur installe une nouvelle version du client qui met à jour le format du dépôt, tous les autres seront alors dans l'incapacité d'accéder au dépôt jusqu'à ce qu'ils mettent eux aussi leur client à la nouvelle version.

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'apparait pas dans le dépôt, seulement son contenu. Par exemple, créez l'arborescence suivante :

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

Importez C:\Temp\New à la racine du dépôt, elle ressemblera alors à ceci :

/trunk
/branches
/tags