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) :
- Le livre des tortues : un ouvrage publié chez O'Reilly, sous licence Creative Commons, donc parfaitement téléchargeable, republiable, redistribuable, pour peu qu'on en cite l'auteur
- Dix trucs sur SVN pour l'utilisateur de CVS : même si j'ai pas utilisé CVS, ça m'a donné quelques commandes SVN de base super-utiles.