GitScrum / Docs
Toutes les Bonnes Pratiques

Développement Basé sur le Trunk

Implémentez le développement basé sur le trunk pour une intégration et livraison plus rapides. Branches courtes, intégration continue et feedback rapide.

4 min de lecture

Intégrez continuellement. GitScrum supporte les workflows de développement basé sur le trunk où les équipes intègrent fréquemment à la branche principale pour un feedback et une livraison plus rapides.

Comprendre le Développement Basé sur le Trunk

Concepts Clés

DÉVELOPPEMENT BASÉ SUR LE TRUNK:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ LE CONCEPT:                                                 │
│ ───────────                                                 │
│ Tout le monde intègre à main/trunk fréquemment            │
│ Branches courtes (heures, pas semaines)                   │
│ Intégration continue à la base de code partagée           │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ TRUNK-BASED:                                                │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │ main ─●──●──●──●──●──●──●──●──●──●──●──●──→            ││
│ │         ╲╱    ╲╱    ╲╱    ╲╱    ╲╱                      ││
│ │        ─●    ─●    ─●    ─●    ─●                      ││
│ │      (branches courtes - heures/jour)                  ││
│ │                                                         ││
│ │ • Petits merges fréquents                              ││
│ │ • Conflits petits et faciles                          ││
│ │ • Toujours livrable                                    ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ VS GITFLOW:                                                 │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │ main    ─●────────────────────────●────→               ││
│ │ develop ─●──●──●──●──●──●──●──●──●●───→                ││
│ │          ╲                      ╱                       ││
│ │ feature ──●────●────●────●────●─                       ││
│ │          (semaines/mois)                                ││
│ │                                                         ││
│ │ • Gros merges à la fin                                 ││
│ │ • Douleur d'intégration                                ││
│ │ • "Enfer des merges"                                   ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ DIFFÉRENCE CLÉ:                                             │
│ Trunk-based = Intégrer souvent, petits lots               │
│ GitFlow = Intégrer à la fin, gros lots                    │
└─────────────────────────────────────────────────────────────┘

Comment Ça Marche

Le Workflow

WORKFLOW TRUNK-BASED:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ FLUX QUOTIDIEN:                                             │
│ ───────────────                                             │
│                                                             │
│ 1. PULL DERNIER                                             │
│    git checkout main                                       │
│    git pull                                                 │
│                                                             │
│ 2. CRÉER BRANCHE COURTE                                     │
│    git checkout -b add-login-button                        │
│    (La branche vit des heures, pas des semaines)          │
│                                                             │
│ 3. FAIRE PETIT CHANGEMENT                                   │
│    - Implémenter petite pièce complète                    │
│    - Ajouter tests                                         │
│    - Rester focalisé                                       │
│                                                             │
│ 4. PUSH ET PR                                               │
│    git push origin add-login-button                        │
│    - Créer PR                                              │
│    - Obtenir revue rapide                                  │
│                                                             │
│ 5. MERGE MÊME JOUR                                          │
│    - Merge à main                                          │
│    - Supprimer branche                                     │
│    - Commencer pièce suivante                             │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ DURÉE DE VIE BRANCHE:                                       │
│ ─────────────────────                                       │
│ ✅ Heures      ← Idéal                                     │
│ ✅ 1 jour      ← Bon                                       │
│ ⚠️ 2-3 jours   ← Devient long                              │
│ ❌ 1 semaine+  ← Pas trunk-based                           │
│                                                             │
│ RÈGLE: "Si branche vit au-delà fin journée, problème"     │
└─────────────────────────────────────────────────────────────┘

Feature Flags

GÉRER FEATURES INCOMPLÈTES:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ FEATURE FLAGS:                                              │
│ ──────────────                                              │
│                                                             │
│ if (featureFlags.newCheckout) {                            │
│   // Nouveau code (en développement)                       │
│   showNewCheckout();                                       │
│ } else {                                                    │
│   // Ancien code (production)                              │
│   showLegacyCheckout();                                    │
│ }                                                           │
│                                                             │
│ BÉNÉFICES:                                                  │
│ • Code en production, feature cachée                       │
│ • Tester en prod avec quelques utilisateurs               │
│ • Rollback instantané (toggle flag)                        │
│ • Séparer déploiement de release                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Solutions Connexes