Quel logiciel de gestion de versions devriez-vous utiliser ?
- Temps de lecture : 6 minutes
- Publié le 27 février 2017 dans Développement
- Par Steven BUTTARAZZI
Qu’il s’agisse de sites web ou de logiciels, le développement n’est pas nécessairement l’apanage d’une seule personne. Dès lors, lorsque que l’on veut travailler de manière collaborative sur un projet dédié – personnel comme professionnel, il apparaît entre autres des différences de travail, de performances, de synchronisation, d’optimisation et de point de vue. Le développement collaboratif et plus globalement la gestion d’équipe et de projet sont des pans entiers de concepts et de techniques que nous n’aborderons pas. Aujourd’hui, nous allons plutôt mettre l’accent sur les logiciels permettant d’allier productivité et travail d’équipe, afin que vos développements restent fluides quelles qu’en soient les circonstances.
Index :
De l’utilité des logiciels de gestion de versions
Un logiciel de gestion de versions (ou VCS, pour Version Control System voire SCM pour Source Code Management) s’articule autour d’un concept très simple : la sauvegarde de l’entièreté des modifications faites sur tous les fichiers du projet et le maintien du code source tout au long du processus de développement. En d’autres termes, il s’agit d’un type d’archivage moderne muni de nombreuses fonctionnalités. Ce type de logiciels est particulièrement efficace pour travailler sur plusieurs versions en même temps. Ainsi, vous pouvez créer plusieurs branches : la branche actuelle (celle de production) et la branche future (celle de développement). Impossible alors de vous emmêler les pinceaux. Autre avantage : les rollbacks. Une coquille quelque part ? En ayant accès à l’historicité des fichiers, vous pouvez récupérer et redéployer des versions antérieures. Ou simplement voir ce que vous avez fait à une période donnée, si vous ou vos collaborateurs avez été productifs, etc.
Enfin, ils permettent de mieux collaborer. Ils obligent à travailler sur un socle commun lorsque l’on passe à un développement collaboratif. Ils distribuent les fichiers à chaque développeur et obligent ces derniers à valider leurs modifications en les renvoyant au logiciel. De fait, des équipes peuvent travailler en simultané (ou non), sur des branches similaires (ou non), mais toujours en gardant les fichiers les plus à jour possible. C’est la fin des problèmes de compatibilité et des bugs de dernière minute. Pour terminer, ils permettent la dématérialisation et la synchronisation à plusieurs endroits du globe. Connectez-vous au logiciel et téléchargez les fichiers, c’est simple comme un clic de souris !
Avantages :
- Ils améliorent le travail collaboratif : vous pouvez travailler en simultané sur les mêmes fichiers.
- Si des modifications ont lieu en parallèle, la fonction merge (fusion) fera le travail.
- Ils aident à la communication générale et au partage des informations.
- Ils permettent le développement sur plusieurs versions en même temps grâce au système de branche.
- L’archivage améliore la sécurité (pertes de données) et la maintenance (rollback en cas de problèmes).
- L’historique permet la statistique : qui a fait quoi, quand, comment et pourquoi.
- Ils prônent la centralisation de l’information et l’utilisation d’un socle commun.
- Ils obligent la validation des changements par leurs visibilités au reste de l’équipe.
- C’est rapide et simple d’utilisation !
Inconvénients :
- En centralisant l’information, ils améliorent la sécurité interne mais pas externe. Soyez vigilants.
- Au premier abord, la mise en place et la configuration d’une telle solution peut en rebuter plus d’un.
- Il existe plétore de fonctionnalités et leurs prises en main peut nécessiter du temps.
- Ils peuvent rapidement prendre de la place en fonction des projets et du nombre de collaborateurs.
- Ils nécessitent un logiciel client pour s’y connecter et valider son travail. Il s’agit de trouver le bon !
Git et GitHub, la puissance 2.0
Il existe de très nombreux logiciels de gestion de versions qui permettent d’offrir aux développeurs des fonctionnalités pour le travail collaboratif. L’un d’entre eux sort clairement du lot : il s’agit de Git. Créé par le père fondateur du noyau Linux, Linus Torvald, en 2005, Git fait de nombreux émules et peut s’enorgueillir de posséder aujourd’hui une base d’environ douze millions d’utilisateurs.
Si Git est aussi populaire, c’est aussi en partie grâce au site Internet GitHub. Ce réseau social pour développeur héberge et gère des millions de projets de développement logiciels. Il permet le partage des informations en proposant un système de gestion de bugs (ou issue tracking system), des propositions de modification (ou pull request), un gestionnaire de tâche, un wiki, des graphiques (soumission, contribution, fréquences, …), etc. Véritable force de frappe depuis 2008, l’année de son lancement, GitHub évangélise Git et fait converger toute la communauté web. En 2016, GitHub possède 14 millions d’utilisateurs et pas moins de 35 millions de dépôts, ce qui en fait le plus grand répertoire de code source au monde.
- Le site officiel du logiciel Git
- Git : Petit guide pour bien démarrer
- GitHub Pour les Nuls : Pas de Panique, Lancez-Vous !
Mercurial SCM, simplicité et rapidité
Tout comme Git, Mercurial SCM est le logiciel de gestion de versions qui monte. Disponible sur Linux et Windows, il est publié sous licence GNU / GPL depuis 2005, l’année de son lancement. D’ailleurs, la concomitance de la sortie de Mercurial et de Git prête à sourire, elle est d’à peine 12 jours ! Basé sur le même principe de décentralisation que Git, Mercurial propose des fonctionnalités somme toute proches de ses concurrents, tout en invoquant sa grande simplicité et rapidité d’utilisation. En effet, Mercurial a fait ses preuves dans la gestion de gros projets, dans sa capacité à ne pas avoir à utiliser de serveur, par son interface web, dans sa gestion des branches et des fusions.
Apache Subversion, ou SVN pour les intimes
Un autre grand parmi les grands, c’est Apache Subversion, ou SVN. Subversion est un logiciel libre développé par l’Apache Software Foundation depuis 2000. Remplaçant de l’illustre logiciel Concurrent Versions System ou CVS, Subversion propose en substance les mêmes fonctionnalités que Git et Mercurial pour le travail en équipe. Il fait souvent figure d’ancêtre, mais attention : le vieux est robuste et, bien qu’il perde du terrain, il reste encore très en forme pour son âge ! Alors, comment tous les différencier ? Lequel choisir ?
Git vs. Mercurial vs. Subversion, le jeu des 5 différences
- La centralisation : c’est le point de différenciation fondamental. Git et Mercurial sont décentralisés. Lorsque vous les utilisez, tout est hébergé à la fois sur le serveur mais aussi sur votre ordinateur. Vous pouvez travailler d’où vous voulez, en avion, dans le train, en mode hors-ligne, etc. Vous avez accès à toutes les données du dépôt puisqu’elles sont téléchargées en intégralité sur votre machine. Pour Subversion qui est un système centralisé, ce n’est pas le cas. Vous devez vous connecter au serveur de dépôt.
- Le stockage : chaque système gère et stocke ses données d’une manière différente. Tandis que Git prône l’utilisation des métadonnées dans un répertoire nommé .git, où sont situées toutes les ressources téléchargées (tags, branches, historique des versions, etc.), SVN lui ne stocke que les fichiers. Vous noterez une différence notable en terme d’espace de stockage.
- Les branches : l’utilisation des branches est de loin plus facile avec Git et Mercurial qu’avec Subversion. Git et Mercurial gèrent tout et savent quel fichier doit être fusionné ou non. Pour Subversion en revanche, les branches ne sont que la résultante d’un répertoire sur le dépôt. Pour fusionner des branches, vous devrez utiliser des commandes spéciales.
- Les révisions : Subversion et Mercurial utilisent une numérotation unique pour chaque révision des fichiers. Ce n’est pas le cas pour Git. (Pour ce-dernier, découvrez plus d’informations et les moyens de contourner cet épineux problème dans cet article de StackOverflow.com.)
- La protection : le contenu présent dans Git et Mercurial est crypté grâce à l’algorithme SHA-1 (pour Secure Hash Algorithma ou algorithme de hachage sécurisé). Cela permet d’éviter la corruption d’un dépôt à la suite d’un problème d’envoi par Internet ou le crash d’un disque dur. Ce n’est pas le cas pour Subversion.
Pour une comparaison plus poussée, cet article de Wikipedia (en anglais) rassemble tous les logiciels de gestion de versions en vous aidant à mieux les différencier au gré des protocoles, de la portabilité et autres fonctionnalités qu’ils sont en droit de vous proposer.
Graphique de l’évolution des recherches sur Google depuis 2004
Ce document atteste, par un moyen détourné, de la popularité de telle ou telle solution logicielle en fonction du nombre de recherches sur Google au fil des ans. Si CVS était très populaire dans les années 2000, il perd progressivement de la place au profit de SVN. Puis, dans les années 2010, c’est au tour de ce dernier d’être détrôné par l’ogre Git. Mercurial, enfin, fait son petit bonhomme de chemin et reste au coude-à-coude.
Pour conclure
L’utilisation d’un logiciel de gestion de versions n’est certes pas obligatoire, pour autant, c’est un allié incontournable dans la gestion de vos projets. Et ce, peu importe le nombre de collaborateurs. D’ailleurs, nombreux sont les développeurs qui utilisent de tels systèmes alors qu’ils sont seuls à programmer. Car, au-delà même de l’aspect collaboratif, ils permettent une sauvegarde, un déploiement et une portabilité du travail sans égal. Alors n’attendez plus, penchez-vous là-dessus ! Vous verrez, à la longue, ces logiciels finissent par avoir que des avantages.
Vos commentaires