Subversion (SVN) est un outil de gestion de documents permettant, dans une certaine mesure, le travail collaboratif au sein de groupes de personnes. C'est un outil qui se classe dans la famille des outils de contrôle de version, comme CVS, et qui est en passe de devenir une sorte de référence dans son domaine. Git est un autre logiciel de contrôle de version plus récent et de plus en plus utilisé.

Nous avons installé un serveur SVN au sein du département pour vous permettre de vous familiariser avec cet outil et de profiter de la puissance d'un gestionnaire de version pour vos travaux de groupe de programmation, de rédaction, ou autre...

Inscription d'un nouveau projet

Notre serveur travaille par projets, auxquels sont attachés des membres, identifiés par le préfixe de leur adresse email @student.uclouvain.be. L'utilisation du serveur se fait au travers du protocole HTTPS, comme pour accéder à un site WEB protégé par SSL.

L'inscription d'un nouveau projet se fait via le formulaire web suivant :

https://scm.info.ucl.ac.be/cgi-bin/inscription.sh

Sur ce formulaire, il vous est demandé d'entrer les paramètres essentiels à la création du projet :

  • son nom qui est aussi son identifiant (unique)
  • les entêtes d'adresses emails des étudiants participants

(chacun de ces champs doit commencer par une lettre et ne peut contenir que des caractères alphanumériques, "-", "." ou "_")

Une fois le formulaire posté, un administrateur doit valider ou réfuter la nouvelle inscription. Dans les deux cas, les membres du projet reçoivent un mail d'information.

Lorsque le nouveau projet est accepté, le repository est immédiatement créé ainsi que les accès nécessaires. En effet, la consultation ou la mise à jour des repositories ne se fait qu'après une authentification avec login et password sur HTTPS. Le login est toujours constitué par l'entête de votre address email "@student.uclouvain.be", le password est généré aléatoirement au moment de l'addition d'un nouveau participant. Lorsqu'un utilisateur est authentifié, le serveur lui associe des droits d'accès. En l'occurence, pour les projets de programmation étudiants, nous avons choisi de donner les droits de lecture et d'écriture sur le repository pour tous les membres inscrits, et aucun droit pour les autres visiteurs. Lorsque c'est la première fois qu'un participant est repris dans les membres d'un projet, il recevra son login et son password dans le mail l'informant de la création du repository. A priori, les droits d'accès définis par défaut, ainsi que les mots de passe, sont non-modifiables. (mais on peut toujours en discuter ;-))

Inscription d'un groupe pour un TP monitoré

Inscription

Pour inscrire votre groupe à un TP monitoré, vous utilisez le même formulaire que ci-dessus. Plutôt que d'indiquer un nom, vous cochez la case d'inscription, ce qui a deux effets :

  • Griser le textfield du nom de projet car le nom de votre groupe vous sera attribué automatiquement par l'application
  • Activer la combo-box qui vous permet de sélectionner le cours pour lequel vous vous inscrivez

Lorsque ces paramètres sont indiqués, vous procédez à l'enregistrement des membres, comme pour un projet normal.

Délivrables

La plupart des TP monitorés prévoient diverses échéances de remise de délivrables. Lorsque votre demande d'inscription aura été validée par un assistant encadrant, vous recevrez un mail mentionnant toutes les dates concernées. Ces échéances sont gérées par le système et cela demande que vous respectiez certaines règles. Ce sont les suivantes :

  • chaque groupe reçoit un sous-répertoire dédié du repository du TP, du type grpXX, avec XX un numéro d'ordre
  • seuls les membres du groupe (et les assistants) ont les droits de lecture-écriture sur le sous-répertoire du groupe
  • chaque délivrable doit se trouver dans un sous-répertoire, portant obligatoirement le nom milestoneXX, avec XX un numéro d'ordre (attention à la casse)
  • les membres du groupe ont les droits de lecture/écriture sur ces sous-répertoire jusqu'à l'échéance du délivrable, date à laquelle vous n'aurez plus que le droit de lecture
  • ni le répertoire du groupe, ni les sous-répertoires de milestones ne sont pré-existants dans votre repository: c'est votre responsabilité de les créer, en respectant les noms indiqués.

Ainsi, imaginons que votre groupe soit grp3, pour le TP INGI007 avec 3 échéances. Le repository global du TP sera pré-existant, disons INGI007-TP-sept2007. Votre sous-répertoire devra avoir la forme suivante :

 INGI007-TP-sept2007
   |
   +-grp3
      |
      +- milestone1
      |
      +- milestone2
      |
      +- milestone3

Tous ces détails sont (re-)mentionnés dans le mail de confirmation que vous recevrez lors de la validation de votre inscription au TP. N'hésitez-pas à demander plus d'explications à votre assistant si vous rencontrez des problèmes avec le repo.

Utilisation

L'utilisation de base de Subversion est assez simple. Il faut principalement connaître quatre commandes:

  • svn checkout <url_du_serveur> : Crée une copie locale du projet dans le dossier courant.
  • svn add <path> : Ajoute le fichier ou dossier pointé par path dans le projet partagé (attention, les fichiers ne sont pas encore copiés, pour cela voir le point suivant).
  • svn commit -m "Commentaire" <path> : Insère les changements faits sur la copie locale dans le projet partagé. Il faut écrire un commentaire précisant à quoi correspondent les modifications.
  • svn update : Pour mettre à jour la copie locale (c'est-à-dire insérer dans la copie locale les changements qui ont été effectués par les autres).
  • svn lock <path> : Verouille le fichier ou dossier pointé par path dans le projet partagé (!!! un commit ANNULE le verouillage !!!).
  • svn unlock <path> : Déverouille le fichier ou dossier pointé par path dans le projet partagé si on est l'auteur du lock (Pas besoin de commit).
  • svn info <url_du_serveur>/<path> : Récupère les informations d'un fichier et indique si il est verouillé (Les infos de verouillage ne sont pas indiquées en local).

Eclipse

Il est possible d'utiliser Subversion dans Eclipse, par l'installation d'un plugin.

Flux RSS

  • Vous pouvez bénéficier d'un flux RSS constitué des logs de commits sur vos repositories SVN INGI
  • Un exemple pour le repository demo
  • Pour l'instant, l'installation du flux se fait par requête à l'équipe système. S'il y a une forte demande, nous ajouterons cette option dans le formulaire d'inscription SVN
  • Attention: les flux RSS sont pour l'instant publics : leur visualisation ne demande pas d'authentification. En fonction de la demande, nous verrons si on change cette politique.

Documentation