Aller au contenu principal

Code

Objectifs

  • Comprendre l'importance d'un IDE et d'un VCS
  • Comprendre les concepts de base de Git
  • Différencier les différents types de Git Workflow

Cours

Code

DevOps

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

IDE

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

https://www.atlassian.com/git/tutorials/comparing-workflows

Centralized Workflow

https://www.atlassian.com/git/tutorials/comparing-workflows

Centralized Workflow

https://www.atlassian.com/git/tutorials/comparing-workflows

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

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

https://nvie.com/posts/a-successful-git-branching-model/

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

Syntax error in textmermaid version 11.4.1

Merge to develop

Syntax error in textmermaid version 11.4.1

Deploy

Syntax error in textmermaid version 11.4.1
F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

Références