Installer Subversion sur Ubuntu GNU/Linux
Bruno Travouillon » mercredi 13 juin 2007 22:41
Logiciel
|
Fil des commentaires de ce billet
URL de rétrolien : http://blog.travouillon.fr/index.php?trackback/2
Subversion, également connu sous le nom de SVN, est un gestionnaire de version Open Source distribué sous une licence de type Apache/BSD.
Cet article est avant tout destiné aux développeurs qui ont besoin de suivre l'évolution de leurs développements en équipe. Subversion stocke toutes les modifications de versions apportées au fichiers sous forme de révisions.
Nous nous intéresserons ici à l’utilisation de Subversion pour un projet de développement informatique. Cependant, il est possible d’utiliser Subversion pour tout type de gestion de contenu, comme une gestion de documentation. Nous allons voir comment créer rapidement un dépôt Subversion et comment y accéder à travers Apache2.
Distribution : Ubuntu GNU/Linux 6.10 (Edgy Eft)
Version de SVN : 1.3.2
Subversion fonctionne sur une architecture client/serveur. Les différentes informations sont stockées dans un dépôt qui fait office de serveur. Les clients SVN peuvent ensuite accéder au dépôt selon différents moyens. Dans cet article, l’accès au dépôt SVN se fera via le protocole WebDAV/DeltaV, une extension de HTTP 1.1.
Le client SVN récupère une "copie de travail" depuis le dépôt. Il est ensuite possible de travailler localement sur les fichiers, puis de soumettre (commit) les modifications au dépôt. Le serveur SVN se charge alors de comparer la version (revision) que vous lui envoyez avec la dernière version qu’il a en mémoire. Si le fichier n’a pas été modifié entre temps, il est enregistré et le numéro de révision est incrémenté. Sinon, le serveur SVN vous répond que le fichier a été modifié et vous présente les différences entre la dernière version du dépôt et la vôtre.
Le paquet subversion contient à la fois les outils pour administrer le serveur et le client. Pour accéder à un dépôt SVN via WebDAV, il faut utiliser les modules mod_dav_svn et mod_authz_svn du serveur HTTP Apache2. Ces modules sont contenus dans le paquet libapache2-svn.
|
Important
|
Il n’est pas possible d’utiliser ce module avec Apache 1.x. |
En premier lieu, passer root sur la station. Sous Ubuntu, il n’y a pas de mot de passe super-utilisateur par défaut, nous utilisons donc sudo. Nous pouvons ensuite installer les paquets nécessaires.
$ sudo su Password: # apt-get install subversion libapache2-svn
Une fois les paquets installés, nous créons notre dépôt SVN à l’aide de la commande svnadmin. Nous avons choisi ici de nommer ce dépôt "nouveauprojet" et de l’installer dans /usr/local/svn
# mkdir /usr/local/svn # svnadmin create /usr/local/svn/nouveauprojet # ls -la /usr/local/svn/nouveauprojet total 36 drwxr-sr-x 7 root staff 4096 2007-01-29 12:09 . drwxr-sr-x 5 root staff 4096 2007-01-29 12:09 .. drwxr-sr-x 2 root staff 4096 2007-01-29 12:09 conf drwxr-sr-x 2 root staff 4096 2007-01-29 12:09 dav drwxr-sr-x 5 root staff 4096 2007-01-29 12:09 db -r--r--r-- 1 root staff 2 2007-01-29 12:09 format drwxr-sr-x 2 root staff 4096 2007-01-29 12:09 hooks drwxr-sr-x 2 root staff 4096 2007-01-29 12:09 locks -rw-r--r-- 1 root staff 229 2007-01-29 12:09 README.txt
Le dépôt est créé !
|
Important
|
Vous pouvez remarquer que des fichiers sont présents dans le répertoire du dépôt. Vous ne devez pas travailler dans le répertoire que nous venons de créer. En effet, c’est Subversion qui gère les modifications à apporter au dépôt. Gardez à l’esprit que vous devez travailler sur une copie locale. |
Pour information, il est possible d’importer un projet déjà existant à l’aide de la commande svn import. Il est également possible d’importer des projets auparavant gérés par CVS, l’ancêtre de Subversion. Pour cela, vous aurez besoin du paquet cvs2svn.
Nous passons maintenant à la configuration d’Apache2 qui va nous permettre d’accéder au dépôt SVN.
En premier lieu, nous pouvons vérifier que les modules mod_dav_svn et mod_authz_svn sont chargés.
# ls /etc/apache2/mods-enabled/ |grep dav_svn dav_svn.conf dav_svn.load
Le fichier dav_svn.load contient les directives qui permettent de charger les deux modules au démarrage d’Apache2. Le fichier dav_svn.conf contient un exemple de configuration du dépôt SVN.
Nous allons modifier ce fichier afin qu’il réponde à nos besoins.
# On indique ici le répertoire à utiliser dans l'URL pour accéder au dépôt <Location /nouveauprojet> DAV svn # On renseigne le chemin du dépôt SVNPath /usr/local/svn/nouveauprojet # Nous souhaitons donner un accès limité au dépôt. Les utilisateurs anonymes # pourront avoir un accès en lecture seule. Les membres de l'équipe de # développement devront s'identifier pour pouvoir soumettre leur # modifications. AuthType Basic AuthName "Projet747.org Subversion Server :)" # Le fichier .htpasswd contient les comptes et mots de passe de l'équipe de # développement AuthUserFile /usr/local/svn/.htpasswd Satisfy Any Require valid-user # Le fichier authz contient les droits d'accès attribués aux utilisateurs AuthzSVNAccessFile /usr/local/svn/authz # Dans mon cas, Apache2 utilise l'encodage de caractères ISO-8859-1 par # défaut. Si votre projet utilise UTF-8, vous pouvez soit modifier votre # configuration, soit indiquer ici l'encodage à utiliser AddDefaultCharset utf-8 </Location>
Comme vous pouvez le constater, le fichier de configuration fait appel à deux autres fichiers : .htpasswd qui contient les comptes et mots de passe et authz qui contient les autorisations d’accès.
Le paquet Apache2 fournit une commande qui permet de générer des couples compte/mot de passe. Cette commande est htpasswd :
# htpasswd -cs /usr/local/svn/.htpasswd bruno New password: Re-type new password: Adding password for user bruno
Le paramètre -c indique que nous créons un nouveau fichier htpasswd. Lorsque vous ajouterez de nouveaux comptes, il ne faudra pas indiquer ce paramètre. Le paramètre -s force le cryptage SHA1 du mot de passe. Nous pouvons maintenant créer le fichier authz qui contient les accès aux différentes ressources du dépôt.
# En premier lieu, nous pouvons créer des groupes [groups] neolan-devel = bruno,alx,arkadius neolan-testeurs = @neolan-devel,psychoben # Nous donnons ici les droits en lecture/écriture (rw) au groupe neolan-devel # Les autres utilisateurs n'auront qu'un accès en lecture seule (r) Le chemin # / indique que nous définissons les droits pour la racine du dépôt [/] @neolan-devel = rw * = r # Nous définissons ici un répertoire privé. Nous ne souhaitons pas autoriser # les utilisateurs anonymes à accéder au contenu de ce répertoire. Par contre, # le groupe des testeurs a besoin de cet accès. [/private] @neolan-testeurs = r * =
Nous avons donc créé différents groupes avec plusieurs utilisateurs. Nous pouvons créer ces comptes utilisateurs dans le fichier .htpasswd.
# htpasswd -s /usr/local/svn/.htpasswd alx
Nous devons également donner les droits d'écriture à l’utilisateur www-data sur le dépôt, sans quoi il nous sera impossible de soumettre les modifications.
# chown -Rf www-data /usr/local/svn/nouveauprojet
Maintenant que notre dépôt est configuré, nous pouvons créer la copie de travail locale.
$ pwd /home/user $ mkdir projets ; cd projets $ svn checkout http://hostname.domain.tld/nouveauprojet Révision 0 extraite.
Ce résultat est normal puisque nous travaillons sur un nouveau projet. Nous allons maintenant créer un nouveau fichier et l’ajouter à la copie de travail.
$ pwd /home/user/projets/nouveauprojet/ $ cat <<EOF >> index.php <?php echo 'Hello World!'; ?> EOF $ svn add index.php A index.php
Nous pouvons maintenant soumettre notre fichier au dépôt SVN :
$ svn commit index.php -m "Affichage d'un message de bienvenue" Ajout index.php Transmission des données . Révision 1 propagée.
Le paramètre -m permet de commenter la mise à jour du fichier. Il existe différents clients SVN autres que la console ! Il est ainsi possible de configurer l’EDI (Environnement de Développement Intégré) Eclipse pour qu’il accède à un dépôt SVN à l’aide de l’extension Subclipse.
Pour les utilisateurs de Windows, il existe TortoiseSVN qui s’intègre directement à Explorer. Pour l’utiliser quotidiennement en milieu professionnel, je ne peux que vous le conseiller.
Cet article ne présente qu’une configuration simplissime de Subversion et est loin de couvrir toutes les possibilités qu’offre ce gestionnaire de version (ainsi que les aspects de sécurité !). Comme indiqué au début de cet article, je vous conseille la lecture du livre SVN en ligne sur http://svnbook.red-bean.com/.