English . Français
- Sytle -
Blue . Blob . LIF . Grey . Red!
Presentation ( Photo )
Resume
Research
Teaching (french)
Softwares
Personnal links

Subversion (SVN) rapidement

Voici un petit tutoriel portant sur l'utilisation de SVN dans notre équipe. Il se décompose en plusieurs étapes.

J'ai écrit des scripts qu'il n'y aura qu'a exécuter pour que tout marche. Ce sont des scripts écrits à la va-vite. N'hésitez pas à me contacter s'il y a un problème.

Si vous devez taper un mot de passe à chaque fois pour vous connecter à mimosa, svn risque de devenir assez vite pénible. C'est pourquoi il vaut mieux créer un système qui permet de ne plus taper votre mot de passe. En pratique c'est même plus sûr d'utiliser cette méthode.
Cette étape n'est bien entendue pas nécessaire, mais conseillée.
Téléchargez le script en cliquant ici. Il faut lancer ce script sur votre machine locale. Il copie un fichier sur mimosa, aussi il vous demande de taper un mot de passe. Le script a besoin que le répertoire $HOME/.ssh existe sur mimosa.

#!/bin/bash

# génération d'un couple de clef à utiliser avec ssh
ssh-keygen -t rsa

# si vous n'avez JAMAIS utilisé cette technique
# vous pouvez utiliser cette commande qui détruira toutes
# les anciennes versions.
scp $HOME/.ssh/id_rsa.pub mimosa.univ-mrs.fr:.ssh/authorized_keys

# Maintenant vous pouvez faire ssh sans taper votre mot de passe.

Attention, ce script détruit le fichier authorized_keys sur mimosa. Si c'est la première fois que vous faite cette manoeuvre, ça n'aura aucun effet, sinon, il faut ajouter votre clef publique à la suite :

scp $HOME/.ssh/id_rsa.pub mimosa.univ-mrs.fr
-- tapez votre mot de passe --
ssh mimosa.univ-mrs.fr
-- tapez encore votre mot de passe
mimosa$ cat id_rsa.pub >> $HOME/.ssh/authorized_keys
mimosa$ logout ssh mimosa.univ-mrs.fr mimosa$ Youpi! plus de mot de passe !

Maintenant que vous ne tapez plus vos mot de passe pour vous connecter à mimosa, on peut commencer à initialiser SVN proprement dit. La façon la plus simple est de créer sur son compte un répertoire accessible en lecture et en écriture au groupe bda. Pour cela, utilisez le script suivant à utiliser sur mimosa.
Le script suivant est téléchargeable ici.

#! /bin/bash
SVNROOT="$HOME/.svnroot"

if [ $# -gt 1 ];
    SVNROOT=$1
fi

mkdir $SVNROOT 
svnadmin create $SVNROOT
for i in `find $SVNROOT`;do
    chgrp bda $i
    chmod g=u $i
done

Maintenant que vous avez initialiser le repository, il va falloir y mettre vos données. Vous avez déjà commencé à écrire votre projet (programme ou article). Il faut l'intégrer dans le repository avec la commande svn import Le script est téléchargeable ici. Avant de lancer ce script, il faut véfier plusieurs choses.

#!/bin/bash

if [ $# -lt 2 ]; do
    echo "positionnez-vous dans le répertoire supérieur au répertoire"
    echo "contenant le projet, et donnez le nom du répertoire en paramètre"
    echo "si votre login est différent sur mimosa et sur votre ordinateur"
    echo "local, modifiez la valeur de la varaible LOGIN en conséquence"
    echo "dans le script"
    exit -1;
done

LOGIN=$USER
projet=$1

mv $projet $projet.tmp

mkdir $projet
mkdir $projet/tags
mkdir $projet/branches
mkdir $projet/trunk
cp -R $projet.tmp/* $projet/trunk/

ADRESSE=svn+ssh://mimosa.univ-mrs.fr/home/$LOGIN/.svnroot/projet

svn import $projet -m "importation initiale"

rm -Rf $projet

echo "Maintenant pour télécharger le projet, lancez la commande"
echo "svn checkout $ADRESSE/trunk $projet"

Maintenant le plus dur a été fait. Vous pouvez utiliser subversion. le script importeProjet précédent renvoie à la fin de l'opération une ligne qui écrit ce qu'il faut faire pour télécharger le projet à partir du repository. Lancez cette commande et donnez-la à toutes les personnes qui partagent votre projet. Cette commande crée un répertoire contenant le projet. Vérifiez que tout est correct. Supprimez l'ancien répertoire contenant votre projet. Vous ne travaillerez plus que dans le répertoire créé par SVN. Ce répertoire contient un répertoire caché supplémentaire nommé .svn qui contiendra des informations de gestions pour SVN.

Maintenant vous avez un répertoire dans lequel vous pouvez plus facilement modifier des fichiers en parallèle. Voici maintenant le cycle typique d'utilisation de svn :

d'autres commandes utiles (l'historique) :

Un mot sur la résolution de conflits. Lorsqu'un fichier (nommé fichier) est conflictuel, subversion va créer trois fichiers supplémentaires :

OLDREV et NEWREV correspondent aux numéros de révisions des fichiers. Lorsqu'il y a un conflit, il vous faut faire l'une des trois choses suivante : Une fois le conflit résolu, lancez la commande svn resolved. Cette commande va supprimer les trois fichiers temporaires de votre répertoire et le fichier ne sera plus considéré comme conflictuel.

Voici comment se présente un fichier conflictuel après avoir lancé la commande svn update :

$ cat sandwich.txt 
Top piece of bread 
Mayonnaise 
Lettuce 
Tomato 
Provolone 
<<<<<<< .mine 
Salami 
Mortadella 
Prosciutto 
======= 
Sauerkraut 
Grilled Chicken 
>>>>>>> .r2 
Creole Mustard 
Bottom piece of bread 
On peut alors l'éditer à la main comme ceci :
Top piece of bread 
Mayonnaise 
Lettuce 
Tomato 
Provolone 
Salami 
Mortadella 
Prosciutto 
Creole Mustard 
Bottom piece of bread 

Remarque importante : pour éviter des problèmes de "faux" conflits, il ne faut pas utiliser l'option "wrap lines" dans emacs qui fait des retours automatiques à la ligne des paragraphes. En effet, si un des deux auteurs utilise des lignes de longueur 80 et l'autres des lignes de longueur 102 alors, tout le paragraphe semblera être modifié alors que la plupart du temps il s'agira de modifier simplement une ligne.

Voilà c'est fini. Si vous voulez mieux comprendre le fonctionnement de svn, il faut télécharger le livre svnbook.

Entirely done with Vim
Validation: [xhtml] . [css]