Migration to GIT

Migration to GIT

Migration de l’ensemble de nos projets de SVN vers GIT. Pourquoi ?

Nous vous l’avions annoncé sur les réseaux sociaux la semaine dernière, nous travaillons actuellement sur une profonde restructuration de notre infrastructure matériel et logiciel.

L’une des étapes de cette migration, sur laquelle nous allons nous attarder aujourd’hui consiste dans la migration de l’ensemble de nos projets de SVN vers GIT.

Dans cet article, nous vous expliquerons dans un premier temps ce que sont SVN et GIT pour nous autres développeurs. Puis, dans un second temps, les raisons qui nous ont motivés pour transférer nos données de SVN vers GIT et pour terminer nous vous parlerons brièvement de la solution que nous avons retenue.

Alors que sont SVN et GIT ? 

Tout simplement des outils de "versionning" de code. Pour résumer ils permettent d’enregistrer au cours du temps l’évolution du contenu d’un ou plusieurs fichiers. Et ainsi de pouvoir rappeler si besoin, une version antérieure d’un fichier. Ils sont donc l’arbre généalogique de notre projet, mais pas que ! Ils permettent aussi de travailler en collaboration. Souvent accessible via internet ces outils permettent d’échanger votre travail de façon simple sans passer par l’envoi par email ou le partage via des clés USB. SVN et Git intègrent des comparateurs de fichiers automatisés qui offrent la possibilité de travailler à plusieurs sur les mêmes fichiers sans écraser le travail de l’autre. Ils ont pleins d’autres fonctionnalités comme la création de branches séparées dans l’arbre généalogique du projet.Quelques exemples d’utilisation : nous sommes 3 développeurs à travailler sur un projet, chacun de nous a modifié lors des 3 derniers jours une centaine de fichiers. SVN ou GIT vont nous permettre de partager nos modifications et surtout d’additionner dans chaque fichier le contenu de chacun (ce qui s’appelle “merger” les fichiers). La création de branches permet elle, dans le cadre de deux clients différents utilisant le même outil, d’avoir un tronc commun pour les fonctionnalités mais de créer pour chacun, une branche pour l’aspect graphique de l’application par exemple. Ainsi lorsqu’on modifie le design pour l’un des clients, on n’impacte pas le second.

Pourquoi GIT ?

Avant 2018 nous étions sur SVN, sur un outil (aussi appelé repository ou repo) online gratuit : Sourceforge. Sourceforge étant un outil gratuit il est accessible par tous cependant vous pouvez bien entendu créer des projets privés et restreindre l’accès à un certain nombre d’utilisateurs. Très bien, alors pourquoi avoir migré vers GIT ? Pour plusieurs raisons, premièrement, héberger les sources de vos projets chez un tiers malgré la sécurité mise en place par sourceforge nous posait un problème éthique. L’idée était donc de rapatrier les données sur l’un de nos serveurs en interne. En terme d’espace disque GIT fait la différence car contrairement à SVN il ne stock pas toutes les versions d’un fichier mais seulement les changements. Autre argument majeur de ce changement est que GIT est un système décentralisé : chaque utilisateur ou développeur créera sur sa machine de développement une copie du répertoire distant et le synchronisera lorsque bon lui semble ce qui permet de travailler sans avoir une connexion “permanente” au repo. Autre avantage de ce système, en cas de panne du serveur principal, chaque développeur dispose d’une copie de sauvegarde datant de la dernière synchronisation effectuée. Là ou SVN oblige un système séparé pour la duplication des données en cas de problème. Et pour conclure, GIT possède aussi un système de création de branches beaucoup plus poussé que SVN ce qui permet une liberté supplémentaire sur la gestion et surtout sur les différentes voies que peut suivre notre projet !

Et notre outil ?

L’outil que nous avons choisi : GITLAB. Son interface graphique moderne et très complète ainsi que la présence d’une API nous a fait craquer. Nous avons déjà des outils en interne nous permettant de gérer nos différentes tâches, l’avancement des projets … et le fait de pouvoir exécuter des actions sur GIT directement via nos outils internes était un vrai plus. L'autre avantage réside dans la gestion de l’intégration continue intégrée qui permet d’effectuer automatiquement un certain nombre de tests, de mesurer la qualité du code et de notifier tout cela en temps réel aux développeurs qui travaillent sur le projet.

Quelques liens :

SourceForge

Gitlab

SVN

GIT