kubuntu-fr

Communauté francophone des utilisateurs de Kubuntu

 

[[subversion]]

Piste: » subversion


Subversion

Subversion (abrégé SVN) est un système de gestion de versions visant à remplacer CVS.

Installation

Toute installation de SVN nécessitera l'installation du paquet subversion.

Une bonne base pour les futurs dépôts ("repository") est /var/svn :

sudo mkdir /var/svn

C'est dans ce dossier que vous créerez vos futurs repository.

Nous considérerons cette base pour la suite de la documentation.

Configuration

Un serveur SVN peut être installé de plusieurs façons :

  • seul, c'est-à-dire que l'accès au dépôt SVN sera sous la forme svn://mon_serveur/projet1 , avec des utilisateurs SVN créés à cet effet;
  • ou administré via un module d'Apache (dav_svn), c'est-à-dire que l'accès au dépôt SVN sera sous la forme http://mon_serveur/projet1, avec des utilisateurs créés pour le module dav_svn pour l'authentification.

  • Dans les 2 cas, dans l'adresse d'accès à un dépôt, mon_serveur/ représente la base des dépôts.
  • La configuration SVN + Apache (avec le module dav_svn) semble plus simple.

Serveur SVN seul

Tout d'abord, créez un dépôt (nous considèrerons le repertoire projet1).

Création des utilisateurs SVN

Vous pouvez ensuite éditer les fichiers de configuration (pour choisir mot de passe et autres) dans le répertoire créé (nous considèrerons le dépôt projet1).

Dans le répertoire /var/svn/projet1/conf/

il faut éditer le fichier svnserve.conf avec au minimum :

      [general]
      # Les utilisateurs non auth : none/read/write
      anon-access = none
      # Les utilisateurs auth : none/read/write
      auth-access = read
      # le fichier de password
      password-db = passwd
      # Cette option spécifie l'authentification du référentiel.
      # Si deux repo ont les mêmes référentiels d'authentification, 
      # ils devraient avoir le même mot de passe de base de données, et vice versa.
      # Le domaine par défaut est le référentiel uuid.
      realm = projet1

il faut éditer le fichier passwd pour qu'il ressemble à :

      [users]
      # nom   =  mot de passe
      joeuser = joepassword
      jayrandom = randomjay

Lancer le serveur

Pour lancer le serveur, il suffit d'exécuter :

sudo svnserve -d -r /var/svn

Il est possible (et conseillé) d'automatiser le lancement de SVN afin de ne pas avoir à taper cette commande à chaque démarrage de la machine. Voir plus bas.

Le port par défaut écouté par svnserve est 3690.

Accès

Le dépôt créé est désormais accessible, via les commandes SVN de base, à l'adresse :

svn://mon_serveur/projet1

Automatiser le lancement de SVN

Jusqu'ici, le serveur SVN est lancé avec votre utilisateur. Ce qui implique que le serveur a les mêmes droits que vous.

Il est donc recommandé de créer un utilisateur pour lancer le serveur et le définir comme propriétaire du dépôt (nous prendrons ici l'utilisateur svn) :

sudo addgroup svn --system
sudo adduser svn --system --home /var/svn --no-create-home --ingroup svn
sudo chown -R svn: /var/svn

Maintenant que nous avons un utilisateur spécifique, pour exécuter SVN au démarrage, il faut créer un script exécutable /etc/init.d/svnserve contenant le code :

#!/bin/sh
 
set -e
if [ -x /usr/bin/svnserve ] ; then
	HAVE_SVNSERVE=1
else
	echo "Svnserve not installed."
	exit 0
fi
 
. /lib/lsb/init-functions
 
case "$1" in
  start)
	log_action_begin_msg "Starting SVN server"
        start-stop-daemon --start --chuid svn:svn --exec /usr/bin/svnserve -- -d -r /var/svn
	log_action_end_msg $?
        ;;
  stop)
	log_action_begin_msg "Stoping SVN server"
        start-stop-daemon --stop --exec /usr/bin/svnserve
	log_action_end_msg $?
        ;;
  force-reload|restart)
	$0 stop
	$0 start
	;;
  *)
  	echo "Usage: /etc/init.d/svnserve {start|stop|restart|force-reload}"
	exit 1
	;;
esac
 
exit 0
  • ne pas oublier de rendre exécutable le script :
sudo chmod +x /etc/init.d/svnserve

Vous pouvez alors respectivement le démarrer, redémarrer et arrêter à l'aide des commandes suivantes :

sudo /etc/init.d/svnserve start
sudo /etc/init.d/svnserve restart
sudo /etc/init.d/svnserve stop
  • Pour ajouter le serveur SVN au démarrage de la machine :
sudo update-rc.d svnserve defaults

Serveur SVN + Apache

Pour installer un serveur SVN utilisant le serveur web Apache, nous aurons besoin d'Apache et de la bibliothèque de Subversion pour Apache.

Il faut donc installer les paquets apache2, libapache2-svn.

Configuration d'Apache

La configuration principale du serveur SVN se situe dans le fichier /etc/apache2/mods-available/dav_svn.conf.

Il y a deux orientations de configuration:

* Configurer tous les dépots un par un, ce qui permet de gérer les autorisations dépot par dépot mais qui oblige à modifier la configuration d'Apache (et donc de le relancer ensuite) à chaque ajout de dépot.

* Configurer un répertoire parent de tous les dépots, ce qui n'oblige pas à reconfigurer Apache pour chaque ajout mais qui ne permet pas de gérer les autorisations finement.

Une source classique d'erreur est d'utiliser un répertoire pour SVN qui est dans le path d'Apache, dans ce cas SVN ne fonctionne pas. Il faut obligatoirement utiliser un répertoire en dehors du path d'Apache.

Configuration au cas par cas

Ici nous considérons que le nom du dépot que l'on veut créer s'appelle "projet1" et qu'il doit se situer dans le répertoire "/var/svn" et que l'on veut y accéder par l'url http://mon_serveur/projet (le nom et l'url sont ici volontairement différents pour voir la différence).

Ouvrir le fichier /etc/apache2/mods-available/dav_svn.conf et décommenter la ligne d'ouverture de l'environnement, et modifier le nom par l'url que vous voulez utiliser:

<Location /projet>

Enlever le commentaire sur la ligne pour activer le module:

DAV svn

Enlever le commentaire et faire pointer vers votre répertoire SVN la ligne suivante vers l'adresse du dépot sur votre disque dur:

SVNPath /var/svn/projet1

Enlever le commentaire devant la ligne de fermeture de l'environnement ouvert précédemment:

</Location>

Redémarrer Apache:

sudo /etc/init.d/apache2 restart

Créez le dépôt projet1 et donner les droits d'accès au dépôt à Apache:

chown -R www-data:www-data /var/svn/projet1

Vérifier à l'aide d'un navigateur que http://mon_serveur/projet réponde.

Pour ajouter un deuxieme répertoire, il faut recopier le contenu entre les balises <location> et </location> une deuxième fois dans le fichier, et donner une url différente au deuxième projet.

Configuration globale

Dans ce cas on a juste besoin de connaitre l'url de la racine des dépots et l'adresse de cette racine sur le disque dur. Ici nous utilisons l'url http://mon_serveur/svn et la racine s'appelle /var/svn.

Ouvrir le fichier /etc/apache2/mods-available/dav_svn.conf et décommenter la ligne d'ouverture de l'environnement, et modifier le nom par l'url que vous voulez utiliser:

<Location /svn>

Enlever le commentaire sur la ligne pour activer le module:

DAV svn

Enlever le commentaire et faire pointer vers la racine de votre répertoire SVN la ligne suivante:

SVNParentPath /var/svn

Ajouter cette ligne après SVNParentPath si vous voulez que la racine http://mon_serveur/svn affiche la liste des dépots SVN existants:

SVNListParentPath On

Enlever le commentaire devant la ligne de fermeture de l'environnement ouvert précédemment:

</Location>

Redémarrer Apache:

sudo /etc/init.d/apache2 restart

Vérifier à l'aide d'un navigateur que http://mon_serveur/svn réponde (liste des dépots si la liste est activée, erreur HTTP 403 sinon).

Maintenant vous pouvez créer autant de dépots que vous voulez dans le répertoire racine puis donner les droits de modification à Apache, ils seront accessibles sans redémarrer Apache.

Créez le dépôt projetXXX et donner les droits d'accès au dépôt à Apache:

sudo chown -R www-data:www-data /var/svn/projetXXX

Authentification

Modifier le fichier /etc/apache2/mods-available/dav_svn.conf pour activer l'authentification, en décommentant et renseignant certaines lignes comme ceci :

AuthType Basic
AuthName "Depot Subversion"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user

Puis créer, avec htpasswd, le fichier « /etc/apache2/dav_svn.passwd » pour un utilisateur, de cette manière :

sudo htpasswd -cs /etc/apache2/dav_svn.passwd utilisateur1

Pour créer d'autres utilisateurs, utiliser la commande :

sudo htpasswd -s /etc/apache2/dav_svn.passwd utilisateur

Faire appartenir ce fichier à l'utilisateur d'Apache :

sudo chown www-data:www-data /etc/apache2/dav_svn.passwd

Redémarrer à nouveau Apache :

sudo /etc/init.d/apache2 restart

Accès

Votre dépôt doit maintenant être accessible via les commandes SVN de base sous l'URL :

http://mon_serveur/projet1

Si vous avez suivi la procédure d'authentification, un nom d'utilisateur et mot de passe (précédement créés) seront demandés.

Subversion et Eclipse

Subversive et Subclipse sont tous deux des greffons pour Eclipse permettant de se connecter à un dépôt SVN.

Subversive

Voir le tutoriel spécifique : Subversive

Subclipse

Voir le tutoriel spécifique : Subclipse

Utilisation

Créer un Dépôt SVN

Vous pouvez créer un repository pour un projet (nous prendrons ici projet1) avec la commande :

sudo svnadmin create /var/svn/projet1

Commandes de base

Créer une copie de travail locale

Commande à exécuter dans le répertoire parent, qui contiendra la copie locale :

svn checkout svn://mon_serveur/projet1

Si l'authentification est requise pour votre dépôt, précisez votre nom d'utilisateur de cette manière :

svn checkout --username nom svn://mon_serveur/projet1

Ceci créera un dossier projet1 contenant les sources du dépôt.

Les commandes suivantes sont à exécuter depuis la copie de travail locale.

Mettre à jour sa copie

Pour récupérer les dernières modification du dépôt et ainsi mettre sa copie de travail à jour, il suffit de taper :

svn update

Envoyer ses modifications

Pour valider et apporter ses modifications au dépôt, il suffit de :

svn commit -m "Message"

Le message du commit (option -m) est obligatoire, elle permet d'inscrire dans les logs une explication des modifications. Exemple : "Ajout de la fonction xxx dans le fichier xxx, …". Si vous ne précisez pas cette option, SVN vous ouvre un éditeur de texte (Nano par défaut) afin d'y inscrire ce message.

Si vous voulez changer l'éditeur par défaut (Nano), il faut modifier la valeur de la variable SVN_EDITOR. FIXME

Pensez à toujours exécuter un update avant d'exécuter un commit. Ceci évitera beaucoup de conflit.

Ajouter un fichier

Si vous ajouter un nouveau fichier à votre copie locale, il ne sera pas envoyé au dépôt lors du prochain commit. Il faut déclarer l'ajout d'un fichier avec :

svn add <fichier>

add déclare l'ajout du fichier au dépôt pour le prochain commit. Pensez donc à commiter après avoir ajouté un fichier.

Supprimer un fichier

Fonctionnant comme pour l'ajout d'un fichier, la déclaration de la suppression pour le prochain commit s'effectue avec :

svn delete <fichier>

Importer un répertoire local existant

L'importation s'effectue avec la commande :

svn import votre_repertoire URL_svn

"URL_svn" pouvant être un répertoire local, il suffit de faire:

svn import votre_repertoire file:///repertoire_svn

Client SVN graphique

Le logiciel RapidSVN n'est pas mal du tout, il permet de réaliser toutes les actions de base en mode graphique.

Intégration à Nautilus

RabbitVCS

Anciennement appelé NautilusSVN, il s'agit d'un outil réalisé en Python couplé aux scripts Nautilus et utilisant des emblèmes de Nautilus (à l'instar de TortoiseSVN sous Windows).

RabbitVCS est disponible pour Ubuntu 8.04 et supérieur en paquet deb : RabbitVCS 0.12 (Hardy), RabbitVCS 0.12 (Karmic)
Il est toutefois conseillé d'utiliser le PPA du projet pour bénéficier des mises a jour.

Scripts SVN pour Nautilus

Pour vous éviter d'avoir à faire ces manipulations sur votre copie à l'aide de la console, il existe un script pour nautilus (explorateur de fichier de Gnome) afin d'intégrer ces commandes au menu contextuel.

Installez le paquet nautilus-script-collection-svn.

Puis activez-le :

nautilus-script-manager enable Subversion

Et enfin redémarrez Nautilus.

nautilus --restart

Plugin SVN pour Thunar

Il existe un plugin pour le gestionnaire de fichier de Thunar. Ce plugin est très jeune. Beaucoup de fonctionnalités ne sont pas encore implémentées.

Il n'existe actuellement pas de paquet dans les dépots. Il va falloir le compiler depuis ces sources.

Attention cette opération nécessite des connaissances sur la compilation. Elle peut rendre instable votre système.

Télécharger la dernière version stable de thunar-svn-plugin ici (la 0.0.3 au moment de la rédaction de cette note).

Décompresser l'archive et se rendre dans le répertoire.

Installez les dépendances nécessaires à la compilation :

sudo apt-get install pkg-config libthunar-vfs-1-dev libapr1-dev libsvn-dev libsasl2-dev libneon27-gnutls-dev libserf-dev

Préparer la compilation

./configure --prefix=$(pkg-config --variable prefix thunarx-1)

compiler

make

et installer

sudo make install

Relancer thunar et vous devriez voir apparaître un menu SVN dans le menu contextuel.

Menu contextuel avec le plugin SVN

Voir aussi


Contributeurs : Takahani , Ju (relecture), SSJ17Vegeta, zedtux, v0n


subversion.txt · Dernière modification: Le 21/02/2010, 23:38 par 213.95.41.13
Le contenu de ce wiki est sous licence : CC BY-SA v3.0