Stratégie de branches
Workflow Git inspiré de GitFlow, simplifié pour l’intégration et la livraison continues.
Branches principales
Objectif : une branche de production stable (main) et un développement actif sur develop.
Branches longues du dépôt :
Branche main
- Code prêt pour la production uniquement, testé et validé.
- Protégée : pas de push direct ; flux via PR depuis
releaseouhotfix. - Étiquettes : chaque fusion correspond à une release et reçoit une version sémantique (ex.
v1.2.3). - Déploiements : fusion vers
main→ déploiement production automatisé.
Branche develop
- Branche d’intégration principale pour le travail en cours.
- Dernière version de dev intégrant fonctionnalités et correctifs en attente de release.
- Protégée : contrôles CI requis avant fusion.
- Déploiements : staging ou préproduction après fusion.
- Base des features : créer les branches de fonctionnalités depuis
develop.
Développement de fonctionnalités
Branches de courte durée pour des tâches ciblées.
Branches feature/*
Nouvelles fonctionnalités.
# 1. Ensure your local develop is up-to-date
git checkout develop
git pull upstream develop
# 2. Create your feature branch from develop
git checkout -b feature/payment-method-wave
# 3. Work on your feature, commit changes regularly
# ... make changes ...
git add .
git commit -m "feat(payments): implement initial Wave structure"
# 4. Keep your branch updated with develop (optional but recommended)
git fetch upstream
git rebase upstream/develop
# 5. Push your feature branch to your fork
git push origin feature/payment-method-waveBranches fix/*
Correction de bugs non bloquants en cours de développement.
# 1. Create bug fix branch from develop
git checkout develop
git pull upstream develop
git checkout -b fix/transaction-timeout-handling
# 2. Fix the bug and commit
# ... make changes ...
git add .
git commit -m "fix(transactions): increase timeout and add retry logic"
# 3. Push the branch
git push origin fix/transaction-timeout-handlingReleases
Branches pour préparer et publier les versions.
Branches release/*
Finalisation avant mise en production : tests finaux, doc, corrections mineures liées à la release.
# 1. Create release branch from develop
git checkout develop
git pull upstream develop
git checkout -b release/v1.2.0
# 2. Perform release tasks (e.g., bump version, update changelog)
npm version minor -m "chore(release): prepare release %s"
# ... final tests, documentation updates ...
# 3. Push the release branch (allows CI to run tests)
git push origin release/v1.2.0
# 4. Once ready, merge into main and develop, then tag main
# (See Merge Strategy below)Branches hotfix/*
Bugs critiques en production sur main — correction rapide.
# 1. Create hotfix branch directly from main
git checkout main
git pull upstream main
git checkout -b hotfix/critical-auth-issue-1.2.1
# 2. Fix the critical bug
# ... make changes ...
git add .
git commit -m "fix(auth): resolve critical login vulnerability"
# 3. Bump the patch version
npm version patch -m "chore(release): hotfix %s"
# 4. Push the hotfix branch
git push origin hotfix/critical-auth-issue-1.2.1
# 5. Once fixed and tested, merge into main and develop, then tag main
# (See Merge Strategy below)Règles de protection
Paramètres GitHub typiques :
-
main- Au moins une revue de PR obligatoire.
- Contrôles CI/lint verts avant fusion.
- Branche à jour avec la base avant fusion.
- Pas de push direct.
- Historique linéaire préféré (squash ou rebase des PR).
-
develop- Contrôles CI avant fusion.
- Fusion sans revue réservée aux mainteneurs (selon équipe).
- Squash/rebase des PR pour un historique lisible.
Stratégie de fusion
-
feature/fix→develop- PR vers
develop, CI et revue OK. - Squash and Merge ou Rebase and Merge pour garder un historique propre sur
develop. - Supprimer la branche après fusion.
- PR vers
-
release/*→mainetdevelop- PR
release/*→main; validations finales OK. - Merge commit (
--no-ff) pour conserver la préparation release. - Après fusion sur
main, étiqueter (git tag v1.2.0 <hash>puisgit push upstream --tags). - Rebaser ou fusionner
release/*dansdeveloppour remonter les correctifs pré-release. - Supprimer la branche
releaseune fois intégrée.
- PR
-
hotfix/*→mainetdevelop- Procédure analogue : PR vers
main, merge commit, tag surmain, puis même correctif ramené dansdevelop. - Supprimer la branche
hotfixensuite.
- Procédure analogue : PR vers
Récapitulatif
-
Nommage
feature/<description>fix/<description>release/v<version>hotfix/<description-or-version>- Kebab-case.
-
Commits
# Format: <type>(<scope>): <subject> # Example: feat(payments): add Wave payment provider integration- Référencer les tickets (
Closes #123dans le corps).
- Référencer les tickets (
-
Pull requests
- Titres et descriptions explicites.
- Liens vers les issues.
- Une PR par changement logique.
- Revues par les membres ou code owners appropriés.