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