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. A la première connexion, vous aurez un compte sur l'interface. Je vous créerai alors un dépôt accessible par vous. Vous aurez à l'utiliser notamment pour ce tp.

Aidez vous du support de cours correspondant et des pages du manuel (man svn).

Vous allez initialiser votre projet avec un repertoire init contenant le fichier ClassPoint.php suivant :

  1. <?php
  2. class point {
  3. protected $x;
  4. protected $y;
  5.  
  6. function __construct($a,$b) {
  7. $this->x = $a;
  8. $this->y = $b;
  9. }
  10. function __toString() {
  11. return "point : (".$this->x.",".$this->y.")";
  12. }
  13. }
  14. ?>
svn import init https://dwarves.iut-fbleau.fr/svn/votre_depot/trunk -m "initialisation"
  1. Récuperez localement 2 versions pour simuler 2 utilisateurs, dans 2 repertoires user1 et user2. Les deux utilisateurs ont leur copie de travail.
  2. L'utilsateur 1 décide de modifier un peu le fichier ClassPoint.php

    1. <?php
    2. class point {
    3. protected $x;
    4. protected $y;
    5.  
    6. function __construct($a,$b) {
    7. $this->x = $a;
    8. $this->y = $b;
    9. }
    10. function __toString() {
    11. return "point : (".$this->x.",".$this->y.")";
    12. }
    13. function add(point $p)
    14. {
    15. $this->x += $p->x;
    16. $this->y += $p->y;
    17. }
    18. }
    19. ?>
    Faites un commit pour l'utilisateur 1.
  3. Pendant ce temps, l'utilisateur 2 modifie également le fichier :

    1. <?php
    2. class point {
    3. protected $x;
    4. protected $y;
    5.  
    6. function __construct($a,$b) {
    7. $this->x = $a;
    8. $this->y = $b;
    9. }
    10. function __toString() {
    11. return "point : (".$this->x.",".$this->y.")";
    12. }
    13. function sub(point $p)
    14. {
    15. $this->x -= $p->x;
    16. $this->y *= $p->y;
    17. }
    18. }
    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 ClassPoint.php
    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 décide d'ajouter un nouveau fichier ClassRectangle.php :

    1. <?php
    2. require ('./ClassPoint.php');
    3. Class rectangle {
    4. protected $p1;
    5. protected $p2;
    6.  
    7. function __construct ($a,$b)
    8. {
    9. $this->p1 = $a;
    10. $this->p2 = $b
    11. }
    12. function __toString()
    13. {
    14. return "points : ".$p1." et ".$p2;
    15. }
    16. }
    17. ?>
    Ajoutez le dans le depot et committez.
  7. L'utilisateur 2 constate un bug dans la méthode sub, 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