Pourquoi versionner son code ?

Qu'est-ce que la gestion de version ?

La gestion de version (ou versionning) permet de suivre un logiciel tout au long de sa vie. Si le versionning est correctement utilisé, on peut savoir pour n'importe quel ajout dans le code :

Le versionning permet également de faciliter l'intégration de nouveaux développeurs. En effet, il est pratique de pouvoir savoir pour quelles raison une ligne ait été modifiée.

Que se passe-t-il sans versionning ?

J'ai travaillé pendant un an dans une entreprise qui ne possédait pas de système automatisé de versionning. Cette entreprise éditait un unique logiciel qui générait au moins 3 quarts du chiffre d'affaires de l'entreprise. Voici comment une mise à jour était effectuée :

  1. Le développeur codait sa mise à jour
  2. Le développeur (ou le chef de projet) comparait ensuite (via le logiciel Beyond Compare) sa nouvelle version avec l'ancienne (à laquelle personne ne devait toucher).
  3. Il intégrait ses modifications dans le dépôt principal.

Lorsque les fichiers mis à jour n'avaient pas été modifiés depuis la version de base du développeur l'intégration des données était simple. Mais dans le cas contraire, le développeur devait vérifier les lignes modifiées par les autres développeurs et intégrer leurs modifications dans sa version.
De plus le chef de projet incrémentait un numéro de version (totalement arbitraire) et qui ne reflétait en rien l'avancement du logiciel. Pour avoir un numéro de version qui ait du sens, je vous conseille de vous diriger vers le système semver.
En utilisant cette méthode, les développeurs n'avaient aucun moyen de savoir quand une ligne avait été écrite et pourquoi. À partir d'un numéro de version, il ne pouvait connaitre que le commentaire de la nouvelle version. Ils ne pouvait pas savoir quels fichiers ou quelles lignes avaient été impactées.
Le résultat de cette méthode était évident : les fusions coutaient très cher en temps. Les développeurs n'avaient aucune visibilité sur l'historique du code. La compréhension du code était plus laborieuse.

Que se passe-t-il avec le versionning ?

Avec le versionning, les développeurs peuvent se maintenir à jour très facilement. D'ailleurs les conflits n'ont pas lieu sur les fichiers, mais sur les lignes ce qui limite réellement le nombre de conflits.
L'intégration des modifications est simple et très rapide. Il y a également moins de risque d'erreur.
Sans versionning, la fusion d'un développement de plusieurs semaines peut durer des heures, alors qu'avec quelques minutes suffisent (et encore).
Les nouveaux développeurs ont plus de facilité à s'intégrer, car ils peuvent rechercher dans l'historique du code les raisons de telle ou telle modification.

Inconvénients du versionning

Il faut former les développeurs au système de version. Cela peut prendre du temps et il vaut peut-être mieux éviter de se lancer dans le versionning si le carnet de commandes est ultra-chargé. Mais si votre carnet de commandes est chargé depuis au moins un an, vous pouvez vous empresser de mettre en place le suivi de version. L'apport de productivité sur le long terme vous permettra de répondre à vos clients plus rapidement.

Les systèmes de versionning

Depuis bientôt 10 ans les systèmes décentralisés ont le vent en poupe. Il existe deux systèmes très populaires largement éprouvés :

Conclusion

Si vous ne versionnez pas votre code parce que "ça prend trop de temps", arrêtez de vous mentir et gagnez du temps sur le long terme !