Apache Subversion
Sur le serveur dwarves
de l'iut (dwarves.arda ou dwarves.iut-fbleau.fr), se trouvent :
L'authentification est réalisée via l'annuaire de l'iut.
Un dépôt tp_svn_login
et un groupe du même nom, dont vous êtes administrateur, a été créé pour les besoins du tp. Vérifiez-le en vous authentifiant sur l'interface web
usvn.
Vous allez initialiser votre projet avec un repertoire rep_init contenant le fichier point.c
suivant :
#include<stdio.h> typedef struct point { double x; double y; } point; point ConstruirePoint(double x,double y){ point r = {x,y}; return r; } void AfficherPoint(point p){ }
svn import rep_init https://dwarves.iut-fbleau.fr/svn/votre_depot/trunk/ -m "initialisation"
Vérifiez depuis l'interface web usvn que le fichier point.c a bien été importé dans le repertoire trunk de votre dépôt.
Remarque cette étape n'est pas obligatoire. Vous pouvez très bien partir initialement d'une copie de travail vide.user1
et user2
.
svn co https://dwarves.iut-fbleau.fr/svn/votre_depot/Les deux utilisateurs ont leur copie de travail.
L'utilsateur 1 décide de modifier un peu le fichier point.c
Faites un commit pour l'utilisateur 1.
#include<stdio.h> typedef struct point { double x; double y; } point; point ConstruirePoint(double x,double y){ point r = {x,y}; return r; } void AfficherPoint(point p){ } point AdditionnerPoint(point p1,point p2){ return ConstruirePoint(p1.x+p2.x,p1.y+p2.y); }
Pendant ce temps, l'utilisateur 2 modifie également le fichier :
Faites un commit pour l'utilisateur 2. Que se passe-t'il ?
#include<stdio.h> typedef struct point { double x; double y; } point; point ConstruirePoint(double x,double y){ point r = {x,y}; return r; } void AfficherPoint(point p){ } point SoustrairePoint(point p1,point p2){ return ConstruirePoint(p1.x-p2.x,p1.y*p2.y); }
Il est nécessaire de faire un update :
svn update
Réglez le conflit à la main, et marquez le conflit comme résolu.
svn resolved point.c svn commit -m "ajout soustraction a la classe point"
L'utilisateur 1 décide de travailler sur une version personnelle du projet. Créez une branche (svn copy), et switcher sur cette branche (svn switch).
L'utilisateur 1 décide d'ajouter un nouveau fichier rectangle.c
:
Ajoutez le dans le depot et committez.
#include "point.c" typedef struct rectangle{ point p1; point p2; } rectangle; rectangle ConstruireRectangle(point a,point b){ rectangle r={a,b}; return r; } void AfficherRectangle(rectangle r){ AfficherPoint(r.p1); AfficherPoint(r.p2); }
L'utilisateur 1 décide finalement de revenir à une version antérieure de son travail. Il utilise la commande svn log
pour avoir
des informations sur les différents commit.
svn log -v
Il repère la révision qu'il souhaite, puis il utilise la commande svn update
pour revenir à cette révision. Par exemple :
svn update -r 6