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 :

  1. #include<stdio.h>
  2.  
  3. typedef struct point {
  4. double x;
  5. double y;
  6. } point;
  7.  
  8. point ConstruirePoint(double x,double y){
  9. point r = {x,y};
  10. return r;
  11. }
  12.  
  13. void AfficherPoint(point p){
  14. printf("(%lf,%lf)",p.x,p.y);
  15. }
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.
  1. Récuperez localement 2 versions pour simuler 2 utilisateurs travaillant sur le même projet, dans 2 répertoires user1 et user2.

    svn co https://dwarves.iut-fbleau.fr/svn/votre_depot/
    
    Les deux utilisateurs ont leur copie de travail.
  2. L'utilsateur 1 décide de modifier un peu le fichier point.c

    1. #include<stdio.h>
    2.  
    3. typedef struct point {
    4. double x;
    5. double y;
    6. } point;
    7.  
    8. point ConstruirePoint(double x,double y){
    9. point r = {x,y};
    10. return r;
    11. }
    12.  
    13. void AfficherPoint(point p){
    14. printf("(%lf,%lf)",p.x,p.y);
    15. }
    16.  
    17. point AdditionnerPoint(point p1,point p2){
    18. return ConstruirePoint(p1.x+p2.x,p1.y+p2.y);
    19. }
    Faites un commit pour l'utilisateur 1.
  3. Pendant ce temps, l'utilisateur 2 modifie également le fichier :

    1. #include<stdio.h>
    2.  
    3. typedef struct point {
    4. double x;
    5. double y;
    6. } point;
    7.  
    8. point ConstruirePoint(double x,double y){
    9. point r = {x,y};
    10. return r;
    11. }
    12.  
    13. void AfficherPoint(point p){
    14. printf("(%lf,%lf)",p.x,p.y);
    15. }
    16.  
    17. point SoustrairePoint(point p1,point p2){
    18. return ConstruirePoint(p1.x-p2.x,p1.y*p2.y);
    19. }
    Faites un commit pour l'utilisateur 2. Que se passe-t'il ?
  4. 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"
    
  5. 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).

  6. L'utilisateur 1 décide d'ajouter un nouveau fichier rectangle.c :

    1. #include "point.c"
    2.  
    3. typedef struct rectangle{
    4. point p1;
    5. point p2;
    6. } rectangle;
    7.  
    8. rectangle ConstruireRectangle(point a,point b){
    9. rectangle r={a,b};
    10. return r;
    11. }
    12.  
    13. void AfficherRectangle(rectangle r){
    14. printf("points : ");
    15. AfficherPoint(r.p1);
    16. printf(" et ");
    17. AfficherPoint(r.p2);
    18. }
    Ajoutez le dans le depot et committez.
  7. L'utilisateur 2 constate un bug dans la fonction soustraire, qu'il corrige. Faites-le !
  8. L'utilisateur 1 fusionne sa branche avec le tronc pour corriger lui aussi le bug (svn merge).
  9. 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
    

retour à la page d'accueil

retour au sommet