Page 1 sur 1

Installation d'un gestionnaire de versions - Subversion

MessagePosté: Jeu 14 Mar 2013 11:56
par lolovoisin
»Installation d'un gestionnaire de versions - Subversion.

Lors de ce tutoriel, nous allons voir comment installer Subversion (svn) afin de faire du travail collaboratif sur des projets.

1) Installation de Subversion.

Comme d'habitude l'installation en elle même est assez simple:
$ sudo apt-get install subversion
Bon ça c'est fait :mrgreen:

2) Préparation de la partie serveur.

Nous allons partir sur le cas ou notre dépôt SVN va se trouve dans /var/svn.
Nous allons donc créer le répertoire accueillant les dépôts:
$ sudo mkdir /var/svn

Nous allons maintenant faire un peu de configuration au niveau du démarrage et du serveur SVN.
Afin de ne pas avoir à la lancer chaque fois à la main en cas de redémarrage, on va créer un script qui le lancera automatiquement, et qui permettra aussi de le redémarrer ou de l'arrêter si besoin est.

Pour cela, rendons nous dans le répertoire init.d.
$ cd /etc/init.d

Maintenant on va créer un script pour le serveur SVN, que nous appellerons svnserve
$ sudo vim svnserve

Puis vous collez ce code à l'intérieur:
Code: Tout sélectionner
#!/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"
        /sbin/start-stop-daemon --start  --exec /usr/bin/svnserve -- -d -r /var/svn
        log_action_end_msg $?
        ;;
    stop)
        log_action_begin_msg "Stopping SVN server"
        /sbin/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


Une fois cela fait, vous enregistrez votre script. Nous allons le rendre exécutable avec la commande suivante:
$ sudo chmod +x /etc/init.d/svnserve

Et enfin, nous disons au serveur que dans les fichiers de démarrage par défaut, il faut qu'il lance le script pour démarrer notre serveur SVN en tapant:
$ sudo update-rc.d svnserve defaults

Nous allons ensuite démarrer notre serveur SVN:
$ sudo svnserve -d -r /var/svn

Maintenant nous allons créer notre premier dépôt. Pour les besoins du tutoriel, nous l'appellerons projet.
Pour cela il existe pour cela une commande qui s'appelle svnadmin. Nous faisons donc:
$ sudo svnadmin create /var/svn/projet

Voilà vous venez de créer votre premier dépôt.

Dernière étape, mais nous allons interdire l’accès au dépôt à toutes personnes non autorisé. Cette manipulation du fichier de conf sera reprise un peu plus tard, mais dans tous les cas, c'est à mon avis un minimum, donc on va le faire maintenant pour en pas avoir de problème par la suite.
Je ne rentre pas dans les détails pour le moment, je vous indique juste ce qu'il faut faire, on reviendra plus tard sur ce fichier de conf.
Éditez le fichier de configuration de votre projet:
$ sudo vim /var/svn/projet/conf/svnserve.conf

Cherchez ce bout de code au début:
Code: Tout sélectionner
# anon-access = read

et remplacez par:
Code: Tout sélectionner
anon-access = none


Vérifiez bien qu'il n'y ait pas d'espace en début de ligne sous peine d'avoir une erreur lors du redémarrage du serveur SVN


On redémarre le serveur SVN et on va utiliser le script que nous avons fait au début en tapant:
$ sudo /etc/init.d/svnserve restart

Voilà pour les étapes basiques mais essentielles.

3) Les différents types d'authentification..

Bon nous avons un dépôt de créé, une configuration de base, il va falloir maintenant aller chercher ce dépôt pour pouvoir travailler dessus.
Pour cela il existe plusieurs moyen de se connecter:


Je vais donc détailler chaque moyen dans les sujets en dessous. Il vous suffit de cliquer sur le moyen qui vous intéresse pour lire le sujet.

Authentification de base, via SVN

MessagePosté: Jeu 21 Mar 2013 09:31
par lolovoisin
»Authentification de base, via SVN.

De base, SVN fourni un moyen simple de s'authentifier sur un SVN.
Il suffit pour cela de modifier le fichier de configuration de votre SVN.

Sachant que nous sommes parti sur un SVN projet situé sous /var/svn nous allons donc modifier le fichier de configuration pour rajouter des utilisateurs.

Pour cela:
$ sudo vim /var/svn/projet/conf/svnserve.conf

On modifie le début du fichier:
Code: Tout sélectionner
[general]
# Les utilisateurs authentifiés : options (none/read/write)
# On donne le droit d'écriture aux utilisateurs authentifiés
auth-access = write
# le fichier de mot de passe
password-db = passwd
# Cette option spécifie l'authentification du référentiel.
# Si deux dépôts 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 = projet


Une fois ces modifications sauvegardées, on va ajouter nos utilisateurs:
Pour cela:

$ sudo vim /var/svn/projet/conf/passwd

ici on rajoute les utilisateurs et leur mot de passe de cette manière:
Code: Tout sélectionner
utilisateur = mot_de_passe


Puis on sauvegarde le fichier.

Enfin, comme vous l'avez remarqué, les mot de passe étant en clair, on va protéger un peu les fichiers d'authentifications. Pour cela:
$ sudo chmod o-r /var/svn/xxxxx/conf/authz
et
$ sudo chmod o-r /var/svn/xxxxx/conf/passwd

Voilà c'est tout.
Il suffit donc sous Tortoise, je mettre le chemin de votre dépôt sous cette forme:
svn://ip_serveur ou nom_serveur/projet
A la fenêtre de connexion, vous mettez votre nom d'utilisateur et votre mot de passe et vous pourrez récupérer votre dépôt.

Authentification via HTTP

MessagePosté: Jeu 21 Mar 2013 09:32
par lolovoisin
» Authentification via HTTP.

Ici nous allons utiliser le protocole HTTP pour nous connecter à notre dépôt, et non pas SVN.

Tout d'abord, nous devons installer deux paquet, Apache2 et libapache2-svn. Je présume que le premier dépot est installé, mais si ce n'est opas le cas, il faudrait l'installer.
On va donc installer le paquets libapache2-svn:
$ sudo aptitude install libapache2-svn

Nous avons donc notre dépôt qui se situe dans le répertoire "/var/svn" et on veut y accéder par l'url http://mon_serveur/projet

Nous allons éditer le fichier de configuration. Pour cela:
$ sudo vim /etc/apache2/mods-enabled/dav_svn.conf

Puis nous allons modifier le fichier de configuration comme suit:
# dav_svn.conf - Example Subversion/Apache configuration
.
.
.
#On dé-commente et on mets un nom qui nous servira pour nous connecter plus tard
<Location /projet>

# On dé-commente la ligne en dessous pour activer le module
DAV svn

# Ici on dé-commente et on indique le chemin de notre dépôt
SVNPath /var/svn/projet

# On dé-commente les lignes en dessous pour activer l'authentification
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd


# On dé-commente aussi cette ligne pour indiquer que l'on veut des utilisateurs authentifiés.
Require valid-user

#Enfin on dé-commente la balise de fermeture
</Location>



Bien maintenant que ce fichier est configuré, nous allons créer des utilisateurs. Pour cela, avec htpasswd, on va créer le fichier « /etc/apache2/dav_svn.passwd » pour un utilisateur. On procède donc comme ceci:
$ sudo htpasswd -cs /etc/apache2/dav_svn.passwd utilisateur1

Si on veut rajouter d'autres utilisateurs, on utilise la commande suivante:
$ sudo htpasswd -s /etc/apache2/dav_svn.passwd utilisateur2

On fait appartenir ce fichier à l'utilisateur d'Apache :
$ sudo chown www-data:www-data /etc/apache2/dav_svn.passwd

Enfin, on redémarre apache pour prendre en compte toutes les modifications:
$ sudo /etc/init.d/apache2 restart

Authentification via HTTPS

MessagePosté: Jeu 21 Mar 2013 09:32
par lolovoisin
HTTPS

Authentification via SVN+SSH

MessagePosté: Jeu 21 Mar 2013 09:33
par lolovoisin
svn+ssh