27.5. Introduction à Subversion

Subversion est un système de contrôle de versions open source. Il est considéré comme le successeur de CVS, ce qui signifie que les fonctions qui existent déjà dans CVS sont normalement aussi présentes dans Subversion. Il est particulièrement recommandé lorsque les avantages de CVS sont recherchés sans avoir à souffrir de ses inconvénients. Un grand nombre de ces fonctions ont déjà fait l'objet d'une brève présentation à la Section 27.1.3, « Subversion ».

27.5.1. Installation d'un serveur Subversion

L'installation d'une base de données de référentiel sur un serveur est une procédure relativement simple. Subversion fournit un outil d'administration dédié à cette fin. La commande à entrer pour créer un nouveau référentiel est la suivante :

svnadmin create /path/to/repository

D'autres options peuvent être consultées avec svnadmin help. Contrairement à CVS, Subversion n'est pas basé sur RCS, mais sur différents types de référentiels. La base de données de Berkeley ou FSFS (un référentiel qui utilise le système de fichiers directement) est généralement utilisée. N'installez pas un référentiel sur des systèmes de fichiers distants, tels que NFS, AFS ou Windows SMB. La base de données nécessite des mécanismes de verrouillage POSIX, que ces systèmes de fichiers ne prennent pas en charge.

La commande svnlook fournit des informations concernant un référentiel existant.

svnlook info /path/to/repository

Un serveur doit être configuré pour permettre à différents utilisateurs d'accéder au référentiel. Utilisez le serveur Web Apache avec WebDAV pour cela ou utilisez svnserve, le serveur qui accompagne Subversion. Lorsque svnserve fonctionne, le référentiel est accessible par une URL avec svn:// ou svn+ssh://. Les utilisateurs devant s'authentifier lorsqu'ils appellent svn peuvent être définis dans /etc/svnserve.conf.

La décision entre Apache et svnserve dépend de nombreux facteurs. Il est recommandé de consulter l'ouvrage consacré à Subversion. Pour plus d'informations, reportez-vous à la Section 27.5.3, « Pour plus d'informations ».

27.5.2. Utilisation et fonctionnement

Utilisez la commande svn (semblable à cvs) pour accéder à un référentiel Subversion. Avec svn help, vous obtenez la description d'un paramètre d'une commande :


checkout (co): Check out a working copy from a repository.
usage: checkout URL[@REV]... [PATH]

  If specified, REV determines in which revision the URL is first
  looked up.

  If PATH is omitted, the basename of the URL will be used as
  the destination. If multiple URLs are given each will be checked
  out into a sub-directory of PATH, with the name of the sub-directory
  being the basename of the URL.
...

Le contenu fourni par un serveur configuré correctement doté d'un référentiel correspondant est accessible par n'importe quel client avec l'une des commandes suivantes :

svn list http://svn.example.com/path/to/project

ou

svn list svn://svn.example.com/path/to/project

Enregistrez un projet existant dans le répertoire actuel (extrayez-le) avec la commande svn checkout:

svn checkout http://svn.example.com/path/to/project nameofproject

L'extraction crée un nouveau sous-répertoire nameofproject sur le client. Des opérations (ajout, copie, changement de nom, suppression) peuvent ensuite être effectuées sur celui-ci :

svn add file
svn copy oldfile newfile
svn move oldfile newfile
svn delete file

Ces commandes peuvent également être utilisées sur des répertoires. Subversion peut en outre enregistrer les propriétés d'un fichier ou d'un répertoire :

svn propset license GPL foo.txt

L'exemple précédent définit la valeur GPL de la propriété license. Vous pouvez afficher les propriétés avec svn proplist :

svn proplist --verbose foo.txt
 Properties on 'foo.txt':
 license : GPL

Enregistrez les changements sur le serveur avec svn commit. Un autre utilisateur peut incorporer vos changements dans son répertoire de travail par la synchronisation avec le serveur en utilisant svn update.

Contrairement à CVS, le statut d'un répertoire de travail dans Subversion peut être affiché sans accéder au référentiel avec svn status. Les changements locaux s'affichent dans cinq colonnes, la première étant la plus importante :

' '

Aucun changement.

'A'

L'objet est marqué pour l'ajout.

'D'

L'objet est marqué pour la suppression.

'M'

L'objet a été modifié.

'C'

L'objet est en conflit.

'I'

L'objet a été ignoré.

'?'

L'objet n'est pas géré par le contrôle des versions.

'!'

L'objet est signalé manquant. Ce drapeau apparaît lorsque l'objet a été supprimé ou déplacé sans la commande svn.

'~'

L'objet était géré comme un fichier mais a depuis été remplacé par un répertoire, ou l'inverse s'est produit.

La deuxième colonne affiche le statut des propriétés. La signification de toutes les autres colonnes est indiquée dans l'ouvrage consacré à Subversion.

27.5.3. Pour plus d'informations

Le premier point de référence est la page d'accueil du projet Subversion à l'adresse http://subversion.tigris.org/. Un ouvrage hautement recommandable se trouve dans le répertoire file:///usr/share/doc/packages/subversion/html/book.html après l'installation du paquetage subversion-doc et est également disponible en ligne à l'adresse http://svnbook.red-bean.com/svnbook/index.html.