Code
IDE
Integrated Development Environment
Éditeur de texte avec des fonctionnalités supplémentaires
Facilite l'édition et le débogage du code
Partage de configuration entre les développeurs
Spécifique à l'IDE ou EditorConfig
Prettier pour le formattage du code
IDE
IDE populaires
Open source et gratuit
IntelliJ IDEA ou autres IDE de JetBrains
Payant (sauf étudiant), mais meilleur refactoring et autocomplétion
Jupyter ?
Pour des rapports interactifs ≠ développement de logiciels
VCS
Version control system (Logiciel de gestion de versions)
Conserve le code source avec son historique
Facilite la collaboration
Le plus populaire: Git (Décentralisé)
Git
Les modifications sont stockées dans des commits
Chaque commit est identifié par un hash
Chaque commit a un parent
Les branches et tags sont des pointeurs vers un commit
Les branches sont des pointeurs mobiles
Réécriture de l'historique
commit --amend : modifie le dernier commit
rebase -i : modifie les x derniers commits
rebase : déplace les commits vers une référence (branche ou commit)
Écrire un historique propre et lisible avant de merge
Workflow
Comment utiliser Git ?
Un workflow est une méthode d'utilisation de Git
Plusieurs workflows existent
Centralized Workflow
Feature Branch Workflow
Gitflow Workflow
Forking Workflow
Centralized Workflow
Proche de l'utilisation de SVN
Une seule branche : main
Tous les développeurs travaillent sur la même branche
Résolution des conflits avant de push
Centralized Workflow
Centralized Workflow
Centralized Workflow
Feature Branch Workflow
Une nouvelle branche par fonctionnalité
Une personne par branche
Merge/Pull request sur la branche main
Code review avant le merge
Feature Branch Workflow
Nouvelle fonctionnalité
https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow
Fonctionnalité fusionnée
https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow
Gitflow Workflow
Deux branches principales : main et develop
main : stable
develop : en cours de développement
Une branche par fonctionnalité
Merge dans develop
Une branche par release ou hotfix
Merge dans develop et main
Gitflow Workflow

Gitflow Workflow
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Gitflow Workflow
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Gitflow Workflow
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Gitflow Workflow
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Forking Workflow
Similaire au Feature Branch Workflow
Fork au lieu de créer une branche
Chaque développeur a sa propre copie du dépôt
Quel workflow choisir ?
Éviter le Centralized
Feature Branch pour les petits projets (même seul)
Idéalement le Gitflow ou une simplification
Adapter le workflow selon les collaborateurs et le projet
"Rebase" Workflow
Ma propre adaptation du Gitflow
main : déployé en production
develop : déployé en pré-production
tag : v0.1.0, v1.0.0, ... sur main
feature : branche par fonctionnalité
Historique linéaire, fast-forward merge après rebase
Feature branch
Merge to develop
Deploy