Dans cette article, nous allons parler de SVN, du couple Git et Github et enfin de notre nouvelle méthodologie de travail liée aux projets.
SVN
Le logiciel de gestion de version historique chez AdFab Connect est Subversion (ou SVN). Celui-ci s’appuie sur le concept d’un dépôt centralisé et unique.
Il a été créé en 2000 pour remplacer CVS en le rendant plus performant :
- Il permet le renommage et le déplacement de fichiers ou de répertoires sans en perdre l’historique
- Les métadonnées (droits de lecture, d’écriture sur un fichier, …) sont versionnées
- Les révisions (numéros de versions) sont globales aux projets
- Prise en charge des branches
Présentation de Git
Comme SVN, Git est un système de gestion de version. Son principe est d’avoir un référentiel du code sur un serveur et accessible à tous les développeurs. Il est conçu pour travailler efficacement sur les projets en équipe. Contrairement à SVN, Git est un système dit « distribué« . C’est à dire que chaque développeur dispose d’une copie de travail et de ses versions sur sa machine en local et peut se les échanger via le serveur.
Présentation de Github
Github est une interface Web permettant de gérer plus facilement les projets sur le serveur distant. Il donne le moyen aux différents acteurs du projet d’interagir ensemble au travers de proposition de code, ou en utilisant le wiki. De plus, Github met à disposition un outil de ticketing (comme Jira ou Redmine), et même un flux d’activité. On peut aussi voir plus facilement les modifications faites sur un projet. Enfin il permet de participer plus simplement aux projets open source via le système de fork, qui est un clone du projet source et qu’on peut modifier comme on le souhaite. Les projets open source seront l’objet d’un autre post sur ce blog.
Mais le plus grand avantage de Github, c’est la gestion des branches et des pull request. Une pull request est un moyen simple de proposer du code en vue d’une intégration au cœur d’un projet. Celle ci est créée à partir d’une branche et Github propose une vision simplifiée des modifications et un fil de discussion. Celui qui possède le projet source, peut à tout moment intégrer ou pas cette proposition de code dans le projet.
Enfin, Github propose une interface de documentation de type Markdown. Markdown est un langage de balisage très léger. Ainsi la documentation est relativement facile à faire et est directement formaté sur Github.
Worklow avec Git & Github
Afin d’utiliser pleinement les possibilités de Git & Github, nous allons adopter un nouveau workflow de travail. En effet, ces deux outils nous permettent d’utiliser une nouvelle stratégie concernant nos développements : le branching model.
Ainsi, nous avons différentes branches :
- la branche master : cette branche est utilisée en production
- les branches de release : ces branches permettront de préparer les mises en production
- la branche develop : cette branche est le point de départ de tous les développements. Develop doit être sain et ne pas comporter de bug.
- les branches de fonctionnalités : ces branches permettent d’ajouter des fonctionnalités aux projets. Ces branches sont ensuite « pull-requester » pour la branche develop.
- les branches de « hotfix » : Ces branches ne doivent généralement pas exister, mais malheureusement elles existent. Elles permettent de corriger très rapidement un bug sur la branche « master » et donc sur la production.
Avantages
Ce worflow va permettre tout d’abord de mettre un cadre à tous nos développements. De plus, on a une qualité des livrables accrue puisque les products owners savent ce qui va exactement passer en production. Ensuite grâce à la relecture de code, on améliore la qualité technique des projets et les développeurs progressent.
Accompagnement
Un nouveau workflow de travail implique beaucoup de changement et n’est pas une chose aisée. Ainsi, nous avons décidé d’utiliser un projet pilote pour mettre en place ce nouveau workflow. Une aide personnalisée pour chaque développeur a été ainsi mise en place afin d’accompagner au mieux ce dernier dans ce changement. Une présentation a été faite afin d’impliquer toutes les parties dans cette nouvelle méthode de travail.
Conclusion
La mise en place de Git et Github sur le projet pilote est une réussite. Toutes les personnes travaillant sur ce projet ont bien appréhendé ce nouveau workflow et ces nouvelles technologies. Nous allons progressivement utiliser Github sur tous nos projets.