Ma définition
Git est un système de gestion de versions, largement utilisé dans le développement informatique pour suivre et gérer les modifications apportées aux fichiers d’un projet. Il conserve un historique complet des changements, permettant de revenir facilement à une version antérieure en cas de problème.
Il favorise la collaboration entre les développeurs en facilitant le travail simultané sur des parties différentes d’un même projet et en permettant de fusionner ces modifications sans problème. Dans le cadre d’un environnement professionnel, cet outil optimise une gestion rigoureuse et sécurisée du code source, réduisant les risques de conflits et d’erreurs au sein des équipes.
Git est devenu un incontournable, non seulement pour les développeurs, mais aussi pour les ingénieurs système. Sa capacité à gérer des scripts, des playbooks Ansible et des fichiers de configuration en fait un atout pour la gestion de l’infrastructure en tant que code, où la cohérence des versions et la traçabilité des modifications sont essentielles. Dans ce contexte, Git permet de faciliter les audits et de renforcer la sécurité.
1ère anecdote
Lors de mon stage, j’ai été confronté à une situation où mon équipe, en charge de la plateforme Ansible d’Airbus Commercial, avait besoin d’un outil pour répertorier les machines non utilisées pour ensuite les supprimer car ces dernières sont facturées sous forme de licences Ansible. Airbus possède deux bases de données distinctes, la CMDB qui liste les machines avec leur statut (active ou inactive) et la base Ansible contenant les machines mais sans le statut (active ou inactive). Jusqu’alors, répertorier manuellement les machines inactives prenait trois jours chaque mois à un membre de mon équipe.
Pour résoudre ce problème, j’ai développé un script Python automatisant la comparaison entre les deux bases de données afin de détecter et de lister les machines inactives, économisant ainsi à Airbus du temps et de l’argent.
Ce projet a été l’occasion de renforcer mes compétences en Git, car j’ai utilisé deux branches principales : master pour le code stable et dev pour le développement et les tests. Travaillant en collaboration avec un autre alternant, nous avons chacun fait des modifications sur la branche dev, avant de fusionner nos contributions dans la branche master une fois les tests validés. En utilisant Git, j’ai pu organiser efficacement le travail collaboratif et assurer la stabilité du code. Cela permettait également aux membres de mon équipe de suivre les avancées du script sans avoir besoin de nous les demander.
Le résultat final a été un script fiable et efficace qui a non seulement permis de réduire considérablement le temps de gestion des licences, mais aussi d’optimiser les coûts pour l’entreprise. Mon équipe a pu ainsi se concentrer sur d’autres tâches et la gestion des licences inutilisées a été entièrement automatisée grâce à des playbooks Ansible stockés sur Git.
2ème anecdote
Durant mon alternance, le dépôt Git de mon équipe comportait un grand nombre de scripts Python et de playbook Ansible laissés par d’anciens membres. Ces scripts et playbook étaient devenus difficiles à utiliser car il n’y avait pas de documentation pour expliquer leur utilisation, personne ne savait précisément à quoi ils servaient et certaines branches étaient obsolètes. Cela augmentait les risques de créer des scripts et playbook doublons ce qui aurait été contre-productif.
J’ai donc pris l’initiative de réorganiser le dépôt Git. J’ai commencé par cloner le dépôt en local pour analyser, fusionner et supprimer les branches qui n’étaient plus nécessaires. Ensuite, j’ai réorganisé les dossiers pour une meilleure lisibilité et une structure plus logique pour faciliter la navigation. À chaque fois, j’ai fait des commits clairs et descriptifs pour chaque modification, ce qui facilitait la compréhension de l’historique des changements.
Pour chaque script et playbook qui n’avait pas de documentation, j’ai ajouté un fichier README détaillant leur fonction, leur mode d’utilisation et leurs dépendances avec les modules python. Ces fichiers ont permis à l’équipe actuelle, ainsi qu’aux futures recrues, de comprendre et d’exploiter rapidement les réalisations passées.
Mon initiative a grandement amélioré la gestion du code au sein de l’équipe. Le dépôt est devenu plus clair et organisé, réduisant ainsi les pertes de temps liées à la compréhension des scripts. Grâce à cette réorganisation, nous avons pu améliorer notre productivité dans le développement de script et de playbook.
Mon autocritique
Je considère avoir un niveau de base solide en utilisation de Git. Je maîtrise les commandes essentielles telles que le clonage de projets, la sauvegarde des modifications ou encore la synchronisation avec des dépôts distants par exemple. Je suis ainsi capable de travailler en collaboration avec mes collègues sans problèmes.
Ma marge de progression se situe dans la résolution des conflits lors de fusions de branches et dans l’organisation de nombreuses branches car je n’ai travaillé à ce jour qu’avec deux ou trois branches maximum. Ce qui ne sera pas toujours le cas suivant la taille du projet.
Dans mon métier actuel, Git est un outil indispensable même si je n’exploite encore que quelques fonctionnalités. Il reste l’un des systèmes que j’utilise presque quotidiennement pour la gestion des versions de code et la collaboration avec mes collègues. En tant qu’apprenti ingénieur systèmes, Git est forcément lié avec des outils d’automatisation comme Ansible dans mon cas, mais il peut également être utilisé avec des outils de gestion d’infrastructure comme Terraform par exemple.
J’ai acquis les bases de Git assez doucement, car malgré le fait que l’outil soit conçu pour être intuitif, j’ai eu un peu de mal, notamment avec les commandes essentielles qui permettent de commencer à l’utiliser immédiatement. Mais en peu de temps et grâce aux projets scolaires, j’ai su cloner des projets, enregistrer mes modifications et synchroniser des dépôts distants sans trop de difficultés. Le fait que Git soit très largement utilisé, un grand nombre de ressources et de tutoriels accessibles sur internet ont facilité mon apprentissage.
Avec l’expérience que j’ai aujourd’hui, je conseille aux débutants de commencer par maîtriser les commandes de base et de bien comprendre le système de versioning et l’importance des branches. Le plus simple est d’utiliser Git pour gérer un site web simple en créant par exemple deux branches, la première pour le site entièrement fonctionnel et testé. Puis la deuxième pour le développement de nouvelles fonctionnalités qui ne sont pas encore stables. Pour finir, fusionner les branches, une fois les fonctionnalités testées et fonctionnelles. Cela permettra de mettre un premier pied dans l’utilisation de Git tout en améliorant le développement du site web.
Mon évolution dans cette compétence
Mon objectif est de renforcer mes bases sans entrer dans des processus trop complexes car je ne suis pas non plus un développeur. Je souhaite donc m’améliorer dans la gestion des branches et des fusions tout en m’entraînant à résoudre des conflits pour être plus efficace en entreprise si cela doit arriver.
Afin de m’améliorer sur les bases précédemment citées, je vais suivre les pages de formations « Comprendre Git » proposées par Grafikart car le contenu créé est gratuit et de qualité. Cela me permettra de comprendre facilement et rapidement les divers aspects qui dans un premier temps sont perçus comme basiques mais qui en les pratiquant le sont beaucoup moins.