Centre de Ressources Informatiques Université Paul Verlaine - Metz Ile du Saulcy BP 80794 57012 Metz Cedex 1

Utilisation de subversion / svn


Pour les développeurs


apt-get install subversion

Consulter par le web  https://svn.univ-metz.fr
les projets commençant par cri_ sont réservés aux membres du groupe ldap crium

L'administrateur doit créer le projet, préciser si l'accès en lecture est public ou privé.
Par défaut, 3 dossiers sont créés :
trunk/ pour le code de travail
branches/ pour déployer de nouvelles branches de travail / test
tags/ pour identifier du code distribué

Lorsque le projet est créé par l'admin
$ cd mon_rep_de_code

$ svn import https://svn.univ-metz.fr/cri/nom_projet/trunk -m "Initial Import"

dans un nouveau dossier de travail

$ svn co https://svn.univ-metz.fr/cri/nom_projet/trunk (checkout)
$ cd trunk

Etat du projet

pour ses développement
$ svn status
$ svn diff
pour les développements sur le dépôt
$ svn info
$ svn update

Modification courantes


s'il faut ajouter / supprimer / renommer un fichier

$ svn add newfile.pl
$ svn del newfile.pl
$ svn mv  newfile.pl

puis

$ svn ci (commit)
vi s'ouvre pour mettre une description

Tags / branches


lorsqu'une release est faites on peut la taguer
$ svn copy https://svn.univ-metz.fr/pub/authcas/trunk
     https://svn.univ-metz.fr/pub/authcas/tags/0.18.3 -m "0.18.3 release"

en cas d'erreur on peut deleter ce tag
$ svn delete https://svn.univ-metz.fr/pub/authcas/tags/0.18.3
et recommencer

On peut ainsi récupérer une version fonctionelle avec

$ svn co https://svn.univ-metz.fr/pub/authcas/tags/0.18.3
ou mieux

$ svn export https://svn.univ-metz.fr/pub/authcas/tags/0.18.4

on obtient juste la version désirée sans les .svn

Résolution de pb / de conflits

si un commit failed :  ( svn: Aborting commit: '/..../fichier' remains in conflict )
Résoudre le conflit puis
$ svn resolved fichier_ok

Revenir à un version antérieure
$ svn merge -r 13:10 https://svn.univ-metz.fr/pub/authcas/trunk
on revient de la révision 13 à la 10
!! ATTENTION, les révisions 11, 12, 13 ne sont pas effacées, on ne peut pas
 complètement effacer un commit accidentel !!

Revert

svn revert pour les changement locaux (non comités)
svn merge -rHEAD:lastgood-num pour un changement commité

SVK


SVK permet d'utiliser subversion (svn) en mode non connecté ou de facilement gérer des projets déjà existant.

Plus d'info sur svk ICI

GIT


Alors que svk est en fin de vie, Git le remplace avantageusement.

Développement avec git
Gestion de conf serveur avec GIT

À lire

http://svnbook.red-bean.com/en/1.1/index.html
http://toutprogrammer.com/article_19_5.html http://toutprogrammer.com/article_19_6.html

Pour l'administrateur

création du projet


svnadmin create /home/svn/cri/crium_session

chown -R www-data:www-data /home/svn

svn mkdir https://svn.univ-metz.fr/cri/crium_session/trunk 
https://svn.univ-metz.fr/cri/crium_session/branches 
https://svn.univ-metz.fr/cri/crium_session/tags 
-m "Création des répertoires d'archivage Subversion."


ou le script
#!/bin/sh
#
# création de projets svn
#
dir='cri/';

echo -n "projet Privé ou publiC ? [P/c]";
read param;

case $param in
    c|C)
        echo " Site Public";dir='pub/';;
    p|P)
        echo " Site Privé";dir='cri/';;
    *)
        echo " Site Privé";;
esac

echo -n "nom :"
read projet;

site="https://svn.univ-metz.fr/$dir$projet";

while true; do
    echo -n "Confirmez : $site ? (y/n)";
    read yn;
    case $yn in
        [nN]* ) echo "Abandon";echo;exit;;
        [yY]* ) echo;break;;
    esac
done

echo " svnadmin create /home/svn/$dir$projet --fs-type fsfs";
svnadmin create /home/svn/$dir$projet
echo " chown -R www-data:www-data /home/svn/$dir$projet";
chown -R www-data:www-data /home/svn/$dir$projet
echo " svn mkdir $site/trunk $site/branches $site/tags  
 -m \"Création des répertoires d'archivage Subversion.\"";
svn mkdir $site/trunk $site/branches $site/tags  
 -m "Création des répertoires d'archivage Subversion."

echo "
##########################################
Pour la lecture web : viewcvs.cgi
Ajoutez à svn_roots = 
dans /etc/viewcvs/viewcvs.conf
   pub_$projet: /home/svn/$dir$projet,
ou
   cri_$projet: /home/svn/$dir$projet,
   si vous voulez protéger l'accès en lecture
##########################################
";

echo "Fin";

Hooks

Les "hooks" permettent d'effectuer des actions lors de commit, comme par exemple alerter une liste et envoyer les diff. Dans /home/svn/cri/crium_session vous trouverez un dossier hooks. Copiez post-commit.tmpl (un template) en post-commit. Adaptez post-commit à votre situation et rendez le exécutable.

Administration système
Installation du serveur