Fil d'Ariane

La gestion des sources par le versioning

Par Jérôme Megel le 06 mars 2014
Svn

De nos jours, le développement logiciel exige que plusieurs personnes participent simultanément à l'écriture de morceaux différents d'un programme et que le travail des uns et des autres soit enregistré en continu mais de manière à pouvoir facilement revenir sur des modifications si cela s'avère nécessaire. Ce problème du « versioning » peut être résolu par des méthodes peu efficaces, comme l'envoi croisé de fichiers adressés à une personne centralisant les tâches et vérifiant qu'il n'y a pas incompatibilité entre les travaux des uns et des autres. Si cette méthode a fait ses preuves, elle est supplantée depuis le développement de l'internet par des méthodes de « gestion de versions » qui enregistrent automatiquement et en continu le travail réalisé. La liste des projets informatiques utilisant un tel système ne cesse de s'allonger, signe du succès de cette méthode. Subversion et Git sont les deux exemples les plus connus de gestionnaires de versions.

Principes de base de la gestion de versions

L'idée est de faire travailler chacun sur une image du projet, image qui est créée à partir d'une source nommée « dépôt ». Une fois la copie locale effectuée vers son ordinateur, le développeur peut modifier cette copie à son gré puis proposer ses modifications qui seront ou non acceptées. A tout moment la personne gérant le dépôt peut décider de revenir sur les modifications apportées : la notion de « version » est donc bien plus souple que ce que ce mot laisse suggérer. La version d'un dépôt correspond en fait à la date de la dernière modification acceptée. La numérotation ordinaire à deux ou trois chiffres (exemple : le noyau Linux en est à la version 3.11) subsiste mais renvoie à un état du dépôt jugé décisif pour justifier l'incrémentation de la numérotation. A tout moment il est possible d'afficher l'historique des modifications et de savoir qui a fait quoi.

Détails et avantages de l'utilisation d'un gestionnaire de version

Même si ce sont surtout les développeurs qui utilisent les gestionnaires de version, n'importe quelle personne participant à un projet informatique et créant un fichier, texte ou binaire, peut tirer profit de ce système ; certaines plateformes hébergeant des dépôt comme Github permettent ainsi de visualiser, outre les fichiers contenant du code, des données texte ou même cartographiques. Le système doit donc être très souple et très précis.
De fait, la modification d'un dépôt obéit à une logique stricte : dans l'ordre, il s'agit d'écrire une modification, de la soumettre et de résoudre les éventuels problèmes liés aux changements proposés. Modifier un fichier signifie écrire un « patch » décrivant les modifications permettant de passer d'un fichier à un autre ; les gestionnaires de version proposent bien sûr de calculer le patch à partir des différences entre l'état de départ du dépôt local et l'état final voulu par l'utilisateur.
Proposer son « patch » est l'étape suivante, celle du « commit », qui ajoute au patch certaines données telles que l'identité de la personne ayant écrit le patch et la date à laquelle le patch a été proposé. La dernière étape est le « merge », qui permet de fusionner les modifications en veillant à ce qu'elles ne soient pas contradictoires, par exemple qu'elles n'affectent pas la même portion du fichier ; une manière de protéger un dépôt contre ce type de problèmes est d'imposer un verrouillage (un « lock ») sur les fichiers, verrouillage modulable selon les participants au projet. Mieux encore, si une partie des modifications est expérimentale ou trop contraignante pour le reste du projet il est possible de créer des « branches » permettant un travail propre sur les fichiers sans que les utilisateurs de la version principale en soit affectés. Le « versioning » de certains gros projets ressemble donc à un arbre, tant les branches qui ne cessent de fusionner entre elles sont nombreuses !

Un exemple de gestionnaire de version : Subversion

Différents logiciels de version existent : l'un des plus connus dans le monde informatique est Subversion, très répandu grâce à son succès dans le monde du logiciel libre. Subversion utilise le principe de la gestion centralisée des versions, c'est-à-dire qu'il existe un dépôt faisant référence et sur lequel les participants doivent s'aligner. Grâce à cette méthode le système de « lock » évoqué plus haut est simple à gérer et les conflits sont de moindre importance que si le système était décentralisé comme c'est le cas pour Git. Subversion est donc très apprécié des développeurs et de leurs employeurs. C'est par exemple le gestionnaire de versions principalement utilisé par la société Roxecom, une agence web experte en e-commerce et e-marketing.

Ajouter un commentaire

Vous avez un projet ?contactez-moi
Me contacter par email