Subversif

Mar 18 janvier 2005

Subversion est un outil de gestion de code source, à la manière de CVS, mais mieux.

Ouais, je sais. En disant ça, je t'aide pas forcément à déterminer ce que c'est ni à quoi ça sert...

Code source ?

Le code source, c'est ce qui sous-tend n'importe quel programme. Windows, Linux, ton navigateur favori, même Notepad ou vi...
C'est une suite de commandes écrites par un ou plusieurs codeurs (ou hackers), dans un langage informatique (y'en a des caisses, ex : C, C++, REBOL, Python...) qui décrivent le comportement d'un programme.
De manière générale, ce code source est compilé ; c'est à dire transformé en quelque chose de compréhensible pour ta machine (du binaire, en gros), et zou ! tu vois apparaître les fenêtres, les boutons et tout le toutim.
Je passe sur les langages interprétés. Même si on ne les compile pas, ils ont un code source, et c'est bien ça qui m'intéresse.

Versions ?

Evidemment, quand on fabrique un programme, on l'écrit pas tout parfait du premier coup. On fait des essais, des tests, on se plante, on revient en arrière, on repart... Bref, au bout d'un moment, si on fait pas tout à fait attention, on se retrouve avec un gros bazar dans son répertoire de travail, avec des "version 1", "version 1a", "version 1b", "version 2", "version 2 sans le bug truc", etc.
Et d'autant plus si on bosse à plusieurs. Chacun a sa petite manière de noter les sous-versions, et il m'est déjà (malheureusement) arrivé dans mon travail de trouver quatre versions d'un fichier intitulées "définitives", avec aucune n'ayant la même date de modif, ni la même taille... Bref.
Dans ces cas-là, on prend une grande inspiration pour pas tatanner les collègues à grands coups de clavier dans la tête et on regrette vraiment qu'ils ne soient pas un peu plus intéressés par le "futur" d'une appli. Dans mon cas, il s'agissait d'animations flash, mais le problème est le même qu'avec des sources dans un langage de programmation classique.
Parce qu'il faut bien le comprendre : être ordonné dans la gestion du source, ce n'est pas seulement pour le travail d'aujourd'hui, mais surtout pour demain. Quand le client demandera une putain de modif sur telle ou telle fonction, et qu'on se replongera avec effroi dans les arborescences toutes plus farfelues les unes que les autres pour découvrir que c'est le bordel total, que c'est incompréhensible, etc.
Dès qu'un projet atteint une taille critique, il faut utiliser un gestionnaire de code source.

Gérer le code source

C'est pourquoi les outils comme CVS ont fait leur apparition. CVS est le gestionnaire de version le plus répandu dans l'informatique moderne. Il gère les projets de très grande envergure, comme Linux, Mozilla, etc. tout autant que les projets plus modestes.
L'objectif de ces outils est multiple :

  • Tenir un historique de toutes les modifications apportées à un code source
  • permettre de revenir en arrière dans cet historique tout en conservant l'ensemble du programme cohérent
  • permettre à tout un chacun de télécharger la toute dernière version encore chaude d'un programme
  • protéger les codes sources critiques d'une mauvaise manipulation (verrouiller un fichier pendant qu'on est en train d'y travailler pour éviter aux collègues de faire pareil et effacer tes modifs)
  • permettre de développer un "fork" à partir d'un tronc commun

Pour le dernier item, il faut peut-être aller plus loin.
Imaginons un programme qui dessine des cercles sur l'écran.
Dans la version 1.0 de Cercles, le programme place un cercle obligatoirement obligatoirement rouge en haut à gauche de l'écran.
Un développeur n'aime pas le rouge. Il crée un "fork" de Cercles, qu'il appelle CerclesMulticolores, qui permet de déterminer la couleur du cercle avant de le dessiner.
Pendant ce temps, le développeur principal de Cercles décide qu'on peut placer le cercle n'importe où sur l'écran. Il sort Cercles 1.1.
En utilisant correctement CVS, CerclesMulticolores 1.1 pourra dessiner des cercles multicolores n'importe où sur l'écran.

Subversion

Subversion est un gestionnaire de code source largement plus convivial et plus clair que CVS. Développé sous licence Apache-like/BSD, il intègre les fonctionnalités principales de CVS, tout en mettant l'accent sur la simplicité d'utilisation.
C'est bien simple : sous Windows, je n'ai jamais réussi à me connecter au moindre serveur CVS. Avec Subversion, j'y suis arrivé du premier coup. C'est typiquement le genre de choses qui fait plaisir.
Tu veux l'installer sur ta Debian-like ? (genre Ubuntu...)
# apt-get install subversion
Sous Windows aussi, on peut l'installer.

Bon, c'est pas mal pour aujourd'hui, non ?

Pour ceux qui voudraient se palucher de la doc sur Subversion, je recommande les liens suivants (en anglais) :