Subversion est un système de contrôle de versions Open Source et est souvent considéré comme le successeur de CVS. Par conséquent, les propriétés déjà présentées de CVS s'appliquent aussi en grande partie à subversion. Il est surtout intéressant si l'on souhaite bénéficier des avantages de CVS sans avoir à en subir les inconvénients. Beaucoup de ces propriétés ont déjà été présentées dans les grandes lignes dans la Section 47.1.3, « subversion ».
La configuration d'un référentiel sur un serveur est une procédure assez simple. Pour cela, subversion fournit un outil d'admnistration. Pour installer un nouveau référentiel, saisissez la commande :
svnadmin create /chemin/vers/le/referentiel
D'autres options sont disponibles via
svnadmin help. Contrairement
à CVS, subversion n'est pas basé sur RCS mais sur la base de données de Berkeley.
Veillez à ne pas installer de référentiel sur des systèmes de fichiers distants tels que
NFS, AFS ou Windows SMB. La base de données nécessite les mécanismes de verrouillage
POSIX que les systèmes mentionnés ci-dessus ne prennent pas en charge.
Pour examiner le contenu d'un référentiel existant, utilisez la commande svnlook.
svnlook info /chemin/vers/le/referentiel
Pour que différents utilisateurs puissent accéder au référentiel, un
serveur doit être configuré. Dans ce cas, on peut avoir recours au serveur
Web Apache avec WebDAV ou utiliser le propre serveur de subversion, svnserve.
Dès que svnserve fonctionne, on peut accéder au référentiel à l'aide de
svn:// ou svn+ssh:// saisi dans un URL.
Le fichier de configuration /etc/svnserve.conf vous
permet de définir les utilisateurs qui doivent s'authentifier à l'invite de
svn.
La décision pour Apache ou pour svnserve dépend de nombreux facteurs. Ici, un coup d'œil à l'ouvrage consacré à subversion s'impose. Vous trouverez plus d'informations à ce sujet dans la Section 47.5.3, « Informations complémentaires ».
Pour accéder à un référentiel Subversion, il existe la commande svn (similaire à cvs). Si le serveur est correctement configuré (avec un référentiel correspondant), chaque client peut accéder à son contenu à l'aide de l'une des commandes suivantes :
svn list http://svn.example.com/chemin/vers/le/projet
ou
svn list svn://svn.example.com/chemin/vers/le/projet
Grâce à la commande
svn checkout,
vous pouvez enregistrer un projet existant dans le répertoire actuel :
svn checkout http://svn.example.com/chemin/vers/le/projet nom_du_projet
La validation crée un nouveau sous-répertoire nom_du_projet
sur le client. On peut ainsi mettre en œuvre diverses modifications (ajout, copie, renommage, suppression) :
svn add fichier svn copy ancien_fichier nouveau_fichier svn move ancien_fichier nouveau_fichier svn delete fichier
Chacune de ces commandes est applicable non seulement à des fichiers, mais aussi à des répertoires. De plus, subversion peut aussi attribuer ce que l'on appelle des propriétés à un fichier ou à un répertoire :
svn propset license GPL foo.txt
Dans l'exemple précédent concernant le fichier foo.txt,
la propriété license se voit attribuer la valeur
GPL. Grâce à
svn proplist, vous pouvez
afficher les propriétés :
svn proplist --verbose foo.txt Properties on 'foo.txt': license : GPL
Enregistrez les modifications sur le serveur avec
svn commit.
Pour qu'un autre utilisateur obtienne vos modifications dans son répertoire
de travail, il doit procéder à une synchronisation avec le serveur à l'aide de
la commande suivante
svn update.
À la différence de CVS, l'état d'un répertoire de travail dans subversion peut être
affiché sans avoir à accéder au référentiel avec la
commande svn status.
Dans ce cas, les modifications locales sont affichées dans cinq colonnes,
la première colonne étant la plus importante :
Aucune modification
L'objet est à ajouter
L'objet est à supprimer
L'objet a été modifié
L'objet est en situation de conflit
L'objet a été ignoré
L'objet n'est pas soumis au contrôle de versions
L'objet est manquant. Cet indicateur apparaît si l'objet a été supprimé ou déplacé sans utiliser la commande svn.
L'objet a été pris en charge comme fichier mais il a été, depuis lors, remplacé par un répertoire ou inversement.
La deuxième colonne indique l'état des propriétés. La signification de toutes les autres colonnes est consultable dans l'ouvrage consacré à subversion.
Utilisez la commande svn help
pour obtenir la description d'un paramètre ou d'une commande :
svn help proplist
proplist (plist, pl): List all properties on files, dirs, or revisions.
usage: 1. proplist [PATH...]
2. proplist --revprop -r REV [URL]
1. Lists versioned props in working copy.
2. Lists unversioned remote props on repos revision.
...
Le premier point de référence est la page d'accueil du projet subversion, sur le
site http://subversion.tigris.org. Après l'installation du paquetage
subversion-doc, vous trouverez
un livre en langue anglaise très intéressant et complet dans le répertoire
file:///usr/share/doc/packages/subversion/html/book.html. Cet
ouvrage est également disponible en ligne à l'adresse
http://svnbook.red-bean.com/svnbook/index.html.