Pour commencer rapidement

Certaines personnes ont du mal à assimiler une nouvelle technologie par une approche “descendante[7] telle que celle exposée par ce livre. Cette section est une très courte introduction à Subversion, et est destinée à donner une chance aux personnes qui assimilent mieux avec une approche d'apprentissage “montante[8]”. Si vous êtes de ceux qui préfèrent apprendre par expérimentation, la démonstration qui va suivre vous mettra le pied à l'étrier. Au fur et à mesure, nous vous renverrons aux chapitres pertinents de ce livre.

Si le concept de contrôle de version ou si le modèle “copier-modifier-fusionner” utilisé par CVS et Subversion est complètement nouveau à vos yeux, vous devriez lire le Chapter 2, Concepts de base avant d'aller plus loin.

Note

Dans l'exemple qui suit, nous supposerons que vous avez installé avec succès svn, le client Subversion en ligne de commande, et l'outil d'administration svnadmin. Nous supposerons aussi que vous utilisez une version de Subversion égale ou supérieure à la version 1.2 (exécutez svn --version pour vérifier.)

Subversion conserve toutes les données soumises au contrôle de version dans un dépôt central. Pour commencer, créons un nouveau dépôt :

$ svnadmin create /chemin/vers/depot
$ ls /chemin/vers/depot
conf/  dav/  db/  format  hooks/  locks/  README.txt

Cette commande crée un nouveau répertoire /chemin/vers/depot qui contient un dépôt Subversion. Ce nouveau répertoire contient (entre autres) une collection de fichiers qui constitue une base de données. Vous ne trouverez pas vos fichiers si vous y jetez un coup d'oeil. Pour plus d'informations à propos de la création et de la maintenance d'un dépôt, voir Chapter 5, Administration du dépôt.

Subversion n'a aucune notion du concept de “projet”. Le dépôt n'est qu'un système de fichiers virtuel soumis au contrôle de version, un grand arbre qui peut contenir tout ce que vous souhaitez. Certains administrateurs préfèrent ne stocker q'un seul projet par dépôt, d'autres préfèrent stocker plusieurs projets dans un seul dépôt en les plaçant chacun dans un répertoire séparé. Les avantages et inconvénients de chaque approche sont discutés dans the section called “Choosing a Repository Layout”. Dans les deux cas, le dépôt ne gère que des fichiers et des répertoires, aussi il incombe aux utilisateurs de considérer que des répertoires particuliers représentent des “projets”. C'est pourquoi, même si vous trouverez des références à des notions de projet à travers ce livre, gardez bien à l'esprit que nous serons toujours en train de parler de répertoires (ou de collections de répertoires) dans le dépôt.

Dans cette exemple, nous partons de l'hypothèse que vous avez déjà une sorte de projet (une collection de fichiers et de répertoires) que vous souhaitez importer dans votre dépôt Subversion nouvellement créé. Commencez par les organiser sous la forme d'un seul répertoire nommé monprojet (ou tout autre nom de votre choix). Pour des raisons qui seront abordées plus tard (voir Chapter 4, Branching and Merging), la structure arborescente de votre projet devrait contenir trois répertoires de haut niveau nommés branches, tags, et trunk. Le répertoire trunk devrait contenir toutes vos données, tandis que les répertoires branches et tags sont vides :

/tmp/monprojet/branches/
/tmp/monprojet/tags/
/tmp/monprojet/trunk/
                     foo.c
                     bar.c
                     Makefile
                     …

Une fois votre arborescence de données prête, importez la dans le dépôt avec la commande svn import (voir the section called “svn import) :

    
$ svn import /tmp/monprojet file:///chemin/vers/depot/monprojet -m "import initial"
Adding         /tmp/myproject/branches
Adding         /tmp/myproject/tags
Adding         /tmp/myproject/trunk
Adding         /tmp/myproject/trunk/foo.c
Adding         /tmp/myproject/trunk/bar.c
Adding         /tmp/myproject/trunk/Makefile
…
Committed revision 1.
$ 

À présent le dépôt contient cette arborescence. Comme signalé plus tôt, vous ne verrez pas vos fichiers en inspectant directement le contenu du dépôt; ils sont tous stockés dans une base de données. Mais le système de fichiers imaginaire du dépôt contient à présent un répertoire de haut niveau nommé monprojet, qui, lui, contient vos données.

Remarquez que le répertoire original /tmp/monprojet est inchangé; Subversion n'a aucune connaissance de ce dernier. (En fait, vous pouvez même le supprimer si vous le voulez.) Afin de commencer à manipuler les données du dépôt, vous devez créer une nouvelle “copie de travail” de vos données, une sorte d'espace de travail privé. Demandez à Subversion d'“extraire” une copie de travail du répertoire monproject/trunk situé dans le dépôt :

$ svn checkout file:///chemin/vers/depot/monprojet/trunk monprojet
A  monprojet/foo.c
A  monprojet/bar.c
A  monprojet/Makefile
…
Checked out revision 1.

Vous disposez maintenant d'une copie personnelle d'une partie du dépôt dans un nouveau répertoire nommé monprojet. Vous pouvez modifier les fichiers de votre copie de travail puis propager ces changements vers le dépôt.

Pour une description exhaustive de toutes les choses que vous pouvez faire avec votre copie de travail, lisez le Chapter 3, Visite Guidée.

Dès maintenant, vous avez la possibilité de mettre votre dépôt à la disposition d'autres personnes à travers un réseau. Voir le Chapter 6, Server Configuration pour en apprendre plus sur les différents types de serveur disponibles et sur la manière de les configurer.



[7] L'approche dite “descendante” consiste à donner des éléments généraux de compréhension pour, progressivement, entrer dans les détails (NDT).

[8] Par opposition à l'approche descendante (NDT).