Table des matières

SUBVERSION

Client

Checkout du repository distant, ceci synchronise les fichiers du serveur SVN vers votre machine dans le répertoire courant :

svn co --username myuser --password 'mypasswd' svn://192.168.0.5/path/trunk/subdir

Commit d'un fichier mis à jour !

svn ci myfile.txt -m comment

Ajout et commit d'un nouveau fichier :

svn add newfile.txt
svn ci newfile.txt -m comment

ou

svn ci --username benoit newfile.txt -m comment

Recupération des dernieres versions

svn update

Lister l'historique des révisions

svn log

Connaître les fichiers modifié avant de faire un update :

svn status --show-updates

Afficher le fichier “file.php” à son état de la révision 495.

svn cat file.php -r 495

Pour le restaurer :

svn cat file.php -r 495 > file.php

Recupération de la révision N°6

svn update r6

Serveur Subversion sous Apache

Installation et configuration

Installer les paquetages pré-requis (sous Debian):

apt-get install subversion libapache2-svn

Créer le dépôt SVN avec les commandes suivantes :

mkdir -p /opt/subversion/depot
mkdir -p /opt/subversion/conf
chown www-data:www-data /opt/subversion/depot

Activer, si besoin, le module « dav_svn » avec la commande suivante :

a2enmod dav_svn

Editer le module « dav_svn » :

vim /etc/apache2/mods-enabled/dav_svn.conf

Et insérer à la fin les lignes suivantes :

<Location /svn>
      DAV svn
      Require valid-user
      SVNParentPath /opt/subversion/depot/
      AuthType Basic
      AuthName "Depot SVN"
      AuthUserFile /opt/subversion/conf/.htpasswd
      AuthzSVNAccessFile /opt/subversion/conf/access
</Location>

Pour créer le premier compte utilisateur :

htpasswd -c /opt/subversion/conf/.htpasswd user

Créer le fichier d’accès :

vim /opt/subversion/conf/access

Insérer le contenu suivant :

[groups]
all = user

Recharger la configuration Apache :

/etc/init.d/apache2 restart

Créer un nouveau projet

Pour créer un nouveau projet :

svnadmin create /opt/subversion/depot/projet1
chown -R www-data:www-data /opt/subversion/depot/projet1

Création du compte utilisateur :

htpasswd /opt/subversion/conf/.htpasswd utilisateur

Editer le fichier d'accès :

vim /opt/subversion/conf/access
[groups]
all = user, utilisateur

[projet1:/]
@all = rw
* = r

Explications :

Serveur Subversion sans Apache

Installation et configuration

Installer le package suivant :

subversion

Création d'un premier dépôt SVN

Dans l'exemple ci-dessous nous allons créer un premier dépôt nommé mondepot

Créer les repertoires suivants:

/home/subversion/repository/mondepot
/home/subversion/admin

Création de mondepot

svnadmin create /home/subversion/repository/mondepot

Modifier le fichier de conf /home/subversion/repository/mondepot/conf/svnserve.conf en de-commentant et en modifiant les options suivantes

anon-access = read
auth-access = write
# Fichier contenant les logins et mots de passe
password-db = ../../../admin/.passwd
# Fichier contenant les droit sur les repository
authz-db = ../../../admin/authz

Editer le fichier /home/subversion/admin/authz en ajoutant les lignes suivantes :

[mondepot:/]
benoit = rw
* = r

Editer le fichier /home/subversion/admin/.passwd en ajoutant les lignes suivantes :

benoit = monmotdepasse

Démarrer le demon SVN ainsi:

 svnserve -d --root /home/subversion/repository

Configurer le lancement de SVN au démarrage

Créer l'utilisateur svn ainsi

useradd -d /home/subversion -s /bin/false svn

Définir le propriétaire

chown -R svn:svn /home/subversion
Configuration avec inetd

Modifier le fichier /etc/inetd.conf en ajoutant la ligne suivante:

svn stream tcp nowait svn /usr/bin/svnserve svnserve -i -r /home/subversion/repository
Configuration avec xinetd

Si xinetd est utilisé créer le fichier /etc/xinetd.d/svn avec les options suivantes:

# Begin /etc/xinetd.d/svn
service svn
{
  port                    = 3690
  socket_type             = stream
  protocol                = tcp
  wait                    = no
  user                    = svn
  server                  = /usr/bin/svnserve
  server_args             = -i -r /home/subversion/repository
}
# End /etc/xinetd.d/svn

Redémarrer xinet.d

/etc/init.d/xinetd reload