Les PR empilées viennent de devenir grand public sur GitHub. Voici votre plan de déploiement.

Par Diogo Hudson Dias
Senior engineer in a São Paulo office reviewing a sequence of small pull requests on a large screen with teammates.

Vous n’avez pas un problème de vélocité. Vous avez un problème de batching. GitHub vient d’ôter votre dernière excuse : les pull requests empilées sont désormais un flux de travail de première classe. Si votre équipe pousse encore du travail via des méga‑PR de 1 500 lignes « pour le contexte », vous payez une taxe cachée en latence de revue, en conflits de merge et en rollbacks du vendredi soir. Les PR empilées sont la façon dont Meta, Google et les équipes à la Graphite expédient en sécurité et à grande vitesse depuis des années. Désormais, vous aussi — sans quitter GitHub.

Ce que changent vraiment les « PR empilées »

Les PR empilées vous permettent de livrer une séquence de petits changements dépendants, chacun étant révisable individuellement et fusionné dans l’ordre. Chaque PR est basée sur la précédente, ce qui vous permet de livrer une fonctionnalité en cinq étapes de 150 lignes plutôt qu’en un plongeon unique de 750 lignes. Les reviewers voient des diffs propres ; la CI valide chaque étape ; les reverts sont chirurgicaux. Ce n’est pas une nouveauté. C’est un mécanisme qui force à éliminer le batching et à réduire le taux d’échec des changements tout en maintenant un haut débit.

Pourquoi maintenant ? Parce que GitHub a retiré la glue. Vous n’avez plus besoin de scripts maison ni d’outils tiers pour gérer les branches dépendantes, retargeter les bases et merger dans l’ordre. Avec les PR empilées natives et les merge queues, vous obtenez un historique linéaire, un rebase automatique et des checks par PR sans héroïsme.

Quand les PR empilées aident (et quand elles n’aident pas)

  • Elles aident quand vous avez un monorepo, un fort couplage ou des changements transverses fréquents (mises à niveau de frameworks, migrations d’API, refontes d’UI). Attendez‑vous à 25–40 % de baisse du temps médian jusqu’au merge et à moins de « resets de revue » causés par des conflits apparus entre‑temps.
  • Elles aident quand le code assisté par IA gonfle le volume de changements. Les LLM adorent toucher cinq fichiers pour un « simple » ajustement. L’empilement vous permet d’isoler l’agitation des outils des changements de comportement.
  • Elles n’aident pas si vos coûts CI montent linéairement avec le nombre de PR et que vous manquez d’invalidation du graphe de build. Si chaque PR déclenche une reconstruction monorepo de deux heures, vous ferez fondre la file.
  • Elles n’aident pas pour des changements triviaux ou des modifications d’un seul fichier. N’ajoutez pas de cérémonie à une one‑liner.

Règle empirique : si un changement se révise raisonnablement en deux sessions focalisées, scindez‑le. Visez 100–300 lignes de code (LOC) par PR, avec un seul sujet par diff. Au‑delà de 400 LOC, votre p95 de temps de revue explose et les bénéfices décroissent.

Un plan de déploiement en 30 jours pour CTO

Semaine 1 : Définir les contraintes

  1. Choisissez une équipe pilote de 5–10 ingénieurs travaillant sur une zone à fort churn du monorepo. Évitez l’équipe infra qui possède les fichiers de build globaux durant le premier mois.
  2. Choisissez votre politique d’historique : rebase/merge queue + historique linéaire. Activez la merge queue GitHub pour la branche par défaut et exigez les status checks. Vous obtenez un ordonnancement déterministe et moins d’incidents de « tronc empoisonné ».
  3. Fixez votre budget de stack : limitez les stacks à 3–5 PR. Au‑delà de 7, les reviewers perdent le contexte et vous recréez le batching par la porte de derrière.
  4. Définissez des SLA de revue : 24 heures ouvrées jusqu’à la première réponse ; 48 heures jusqu’à l’approbation quand c’est au vert. Publiez‑les comme vous publiez les rotations d’astreinte.
  5. Instrumentez des métriques de base : taille médiane des PR (LOC), temps jusqu’à la première revue, temps jusqu’au merge, taux d’échec des changements (hotfix dans les 72 heures suivant le merge) et ré‑ouvrages induits par conflit. Si vous ne mesurez pas déjà, vous ne saurez pas si l’empilement paie.

Semaine 2 : Des garde‑fous dans le code, pas dans Confluence

  1. Nom des branches : imposez un motif comme user/feature‑id/stack‑01, stack‑02, etc. Votre CI peut l’utiliser pour visualiser et contrôler les stacks.
  2. Discipline de commit : chaque PR empilée doit avoir une phrase d’intention unique dans la description : « Stack 2/4 : extraire la couche de validation ; aucun changement de comportement. » Ajoutez une checklist explicite pour les reviewers (tests, migrations, flags). La discipline bat les vibes.
  3. CODEOWNERS au bon niveau de granularité : répartissez la charge de revue. Dans un monorepo, trop de stacks meurent sur l’autel de « la seule personne qui peut approuver /core/ ». Fractionnez la propriété par répertoire ou surface langage quand c’est possible.
  4. CI consciente des stacks : exécutez des checks rapides sur chaque PR de la stack (lint, unit tests, type checks) et réservez les suites e2e complètes pour le haut de la stack ou la barrière de la merge queue. Ajoutez un job « revalidate top » qui s’exécute automatiquement quand une PR inférieure change.
  5. Mise à jour automatique des bases : activez le retargeting automatique de base et le rebase on merge dans GitHub. Les humains ne doivent pas toucher à ça. La stack doit « onduler » vers l’avant sans pushes manuels.

Semaine 3 : Pilote en conditions réelles

  1. Choisissez une vraie fonctionnalité avec une valeur visible et des modifications transverses connues (p. ex., remplacer une bibliothèque de logging, ajouter des événements d’audit ou extraire une frontière de service).
  2. Concevez la stack avant de coder. Cinq cartes sur un board : 1) extraction pure, 2) adapters et shims, 3) migration du write path derrière un flag, 4) bascule du read path derrière un flag, 5) suppression du code mort et clean‑up. Livrez chaque élément dans sa propre PR.
  3. Utilisez des feature flags et des garde‑fous de migration : tout changement de comportement atterrit éteint. Chaque PR doit être sûre à merger et à revert indépendamment.
  4. Activez l’auto‑merge pour les PR au vert afin d’éviter de camper sur les boutons. Laissez la merge queue sérialiser l’atterrissage.
  5. Imposez un plan de revert : pratiquez un exercice de « revert de plage ». Si la PR 3 échoue après merge, revert 3 seulement. Si le rollback exige de dérouler 1–3, vos frontières de stack sont mal posées.

Semaine 4 : Mesurer et étendre

  1. Comparez les métriques : visez 25–40 % de réduction du temps médian jusqu’au merge, des diffs 30–50 % plus petits, et une division par deux du ré‑ouvrage causé par les conflits. La dépense CI peut grimper de 10–25 % sauf si vous avez réglé l’invalidation de build.
  2. Codifiez les règles dans un court guide : 1–2 phrases de portée par PR, 100–300 LOC, tout sous flag, plafond de stack à 5. Incluez une section « quand ne pas empiler ».
  3. Généralisez aux équipes adjacentes, mais conditionnez‑le à la santé de la CI. Si l’attente de la merge queue > 30 minutes aux heures de pointe ou si les flakes e2e dépassent 2 % sur la queue, corrigez l’infra avant d’ajouter plus de stacks.

Réalité monorepo : ne faites pas fondre la CI

La façon la plus rapide de gâcher un déploiement de PR empilées, c’est de faire exploser vos pipelines. Un monorepo qui reconstruit le monde à chaque PR transforme de petits diffs en grosses factures. Corrigez cela d’abord :

  • Invalidation du graphe de build : adoptez un système de build qui comprend les cibles et dépendances (Bazel, Buck2, Gradle avec cache distant, Turborepo). Si une PR uniquement UI déclenche une suite e2e backend, vous brûlez de l’argent.
  • Cachez agressivement : activez le cache distant et la réutilisation du cache GitHub Actions entre branches empilées. Les stacks partagent la plupart des artefacts.
  • Scindez les checks : checks rapides (moins de 5 minutes) sur chaque PR de la stack ; suites lentes uniquement en haut de stack et au passage de la merge queue. À elles seules, ces mesures réduisent les minutes CI de 20–30 % selon des données de pilotes que nous avons vues.
  • Intégration pré‑merge : utilisez la merge queue GitHub comme source de vérité. Rebasez chaque PR sur la tête de la queue, exécutez les gates complètes une seule fois, puis atterrissez dans l’ordre. C’est votre « test d’intégration », pas chaque PR.

Ergonomie de revue : préservez vos équipes

Les PR empilées peuvent épuiser les reviewers si vous êtes négligents. Les outils comptent, mais les habitudes comptent plus.

  • Bordez la stack : pas de stacks à « défilement infini ». Si vous découvrez du nouveau scope, faites atterrir la stack en cours et ouvrez une nouvelle séquence. Ne prenez pas une chaîne en otage pour des apprentissages de la semaine 2.
  • Une seule préoccupation par PR : « renommage + changement de logique » fait deux PR. Noms d’espaces, imports, renommages d’abord. Le comportement vient ensuite. Votre futur vous vous remerciera lors d’un revert.
  • Hygiène des diffs : ajoutez des tags « aucun changement de comportement » aux PR de refacto uniquement et faites‑les respecter. Bloquez toute modification de tests qui introduit subrepticement de la logique.
  • Assignez les reviewers par couche : des yeux spécialisés pour les refactos vs. les changements de comportement. La PR de migration de données va aux propriétaires DB. La PR d’adapter va à la plateforme. N’arrosez pas cinq personnes à chaque couche.
  • Budgets de revue : 45 minutes par jour de revue, maximum. Si une stack dépasse le budget, elle est trop grosse ou mal façonnée. Protégez la concentration.

Changements de schéma et autres sujets difficiles

Les PR empilées brillent sur les migrations si vous respectez l’ordre et la sécurité.

  • Étendre – Migrer – Contracter : PR1 ajoute de nouvelles colonnes nullables + double‑écriture derrière un flag ; PR2 backfill avec des jobs idempotents ; PR3 bascule les lectures ; PR4 supprime les anciennes colonnes. Chaque PR est sûre et revertible indépendamment.
  • Garde‑fous à l’exécution : livrez les migrations avec des kill‑switches (feature flags, toggles d’environnement). Si votre plan de rollback est « restaurer depuis une sauvegarde », vous n’avez pas de plan.
  • Adaptateurs d’accès aux données : ajoutez des adapters de lecture/écriture dans les PR précoces afin que les PR ultérieures puissent changer la persistance sans toucher les call sites. Cela réduit le rayon d’explosion et le périmètre de revue.
  • Frontières inter‑repo : si vos contrats couvrent plusieurs dépôts, figez les interfaces via des clients versionnés. Faites atterrir d’abord les stacks serveur, puis les stacks client derrière des toggles. N’entrelacez pas des PR serveur/client dans une seule chaîne de dépendances à travers des repos.

Équipes assistées par l’IA : contenir le churn

L’IA accélère la frappe, pas l’intégration. Les PR empilées sont votre gouverneur.

  • Exigez une « Spec PR » à la base de tout changement IA multi‑fichiers : uniquement tests, types et esquisses d’interfaces ; pas de comportement. Laissez ensuite l’IA remplir les implémentations dans les couches supérieures. Les reviewers peuvent approuver le contrat une fois.
  • Linting des diffs : bloquez les PR qui dépassent les plafonds de LOC sauf si elles sont taguées « migration ». L’IA adore déborder ; imposez la discipline automatiquement.
  • Empreintes d’outils : exécutez des diffs d’analyse statique (SARIF) sur chaque couche de PR. Certains modèles quantifiés dégradent la fiabilité des appels d’outils ; superposez de petits changements pour rendre les échecs évidents.

Gouvernance et risque

L’empilement n’est pas un laisser‑passer. Traitez‑le comme tout changement de processus : définissez des contrôles, puis mesurez.

  • Scans de sécurité par couche : le code scanning doit s’exécuter sur chaque PR, même les refactos. Vous détecterez des changements « inoffensifs » mécaniques qui élargissent accidentellement la surface d’attaque.
  • Frontières de propriété : exigez des approbations explicites lorsqu’une PR franchit une frontière à haut risque (auth, billing, PII). Ne laissez pas une refacto à faible risque dériver dans du code sensible.
  • Sécurité de déploiement : liez les feature flags à des togglers autorisés. Si n’importe qui peut activer en prod une stack à moitié atterrie, vous avez recréé « gros merge, on prie » avec des runbooks.
  • Réponse aux incidents : adoptez une politique « revert d’abord » et célébrez les reverts. Un revert net de PR 3/5 est un succès, pas un échec. Récompensez la vitesse et la clarté.

Des chiffres que vous pouvez défendre auprès de votre DAF

Attendez‑vous à des arbitrages, mais le calcul tient généralement la route :

  • Débit : les équipes qui passent de PR de 800–1 200 LOC à des diffs empilés de 150–300 LOC voient typiquement leur temps médian jusqu’au merge baisser de 25–40 % en deux sprints. Les reviewers décident plus vite avec moins de changements de contexte.
  • Ré‑ouvrage : le ré‑ouvrage dû aux conflits baisse de 40–60 % parce que l’ordre de merge est déterministe et les rebase automatiques. Cela réduit aussi les « fire drills » du week‑end.
  • Dépense CI : sauf mise en place d’invalidation de build, les minutes CI peuvent augmenter de 10–25 %. Avec des builds par cibles et la réutilisation du cache, nous avons vu des pilotes neutres voire –10 %, car les flakes et reruns chutaient.
  • Taux d’échec des changements : de petits diffs plus des flags réduisent les incidents post‑merge de 15–30 %. Les reverts sont moins coûteux et moins politiques ; on tire la corde plus tôt.

Rien de tout cela ne requiert la foi. Instrumentez les métriques DORA et un compteur de conflits. Si votre stack ne les fait pas bouger, arrêtez et corrigez le contrôle du scope ou la CI, puis réessayez.

Modes d’échec fréquents (et comment les éviter)

  • L’escalier infini : des stacks qui n’atterrissent jamais parce que les couches basses changent sans cesse. Corrigez en plafonnant la hauteur de stack et en mergeant chaque semaine les séquences terminées, même si la fonctionnalité n’est pas « finie ». Les flags existent pour une raison.
  • Ruées de revue : chaque couche ping les mêmes trois personnes. Corrigez avec une couverture CODEOWNERS et une rotation. Assignez les couches de refacto à des approbateurs différents des couches de comportement.
  • Couplage caché : des changements de comportement se glissent dans des PR de refacto. Corrigez avec des checklists et des checks CI qui interdisent les modifications de tests dans les PR « aucun changement de comportement ».
  • Interblocages CI : des exécutions e2e complètes sur chaque couche bloquent la queue. Corrigez en exécutant les suites lourdes uniquement en haut de stack et à l’intégration via la merge queue.
  • Dette de flags : vous atterrissez cinq stacks et oubliez de nettoyer les flags. Corrigez avec un SLA : retirer les flags obsolètes sous deux releases et alerter sur les toggles morts.

Détails d’implémentation à soigner

  • Auto‑merge + queue : exigez des checks au vert et un historique linéaire, puis laissez la queue faire atterrir les stacks dans l’ordre. Les humains ne doivent pas babysitter les boutons.
  • Branche « zone d’atterrissage » protégée : certaines équipes utilisent une branche temporaire comme base de la stack, puis rebasent l’ensemble sur main juste avant la mise en queue. Cela isole l’agitation pendant le développement actif.
  • Modèles de description de PR : fournissez un bloc à copier‑coller avec « Portée, Comportement, Tests, Flags, Risque, Plan de revert ». Réduisez le bikeshedding et le contexte manquant.
  • Visualisation : utilisez des labels comme « stack:1/4 » et chaînez les liens en haut de chaque PR. Les reviewers doivent voir l’ordre d’un coup d’œil.
  • Docs et formation : faites une démo live de 30 minutes d’une vraie stack. Les docs écrites ne changent pas les habitudes ; voir une fonctionnalité en 5 PR atterrir en une journée, si.

Pourquoi c’est important maintenant

Deux tendances se percutent en 2026 : un volume de changements amplifié par l’IA et des attentes de fiabilité plus strictes. Votre board veut des fonctionnalités plus vite. Vos clients ne tolèrent pas les régressions. Les PR empilées vous permettent de déplacer les deux courbes dans le bon sens : de petits deltas plus sûrs qui s’intègrent en continu sans forcer votre équipe à choisir entre vitesse et contrôle.

Le support GitHub des PR empilées enlève l’excuse de la plateforme. C’est désormais une décision de processus — pas une contrainte d’outils. Si votre organisation reste par défaut au « big bang » parce que « on a toujours fait comme ça », vous laissez du débit sur la table et invitez des surprises du vendredi.

Adoptez les PR empilées sans drame

Commencez avec une équipe, une fonctionnalité, quatre semaines. Plafonnez les stacks, mettez tout sous flag, affinez la CI et mesurez sans pitié. Si vos métriques ne bougent pas, ajustez les frontières jusqu’à ce qu’elles bougent. Quand elles bougent, étendez horizontalement — mais seulement au rythme que votre merge queue et vos reviewers peuvent supporter.

Points clés

  • Les PR empilées transforment des méga‑diffs risqués en étapes sûres et révisables, et elles sont désormais natives sur GitHub.
  • Pilotez avec un plafond de 3–5 PR par stack, 100–300 LOC par PR, et des SLA reviewers de 24/48 heures.
  • Utilisez les merge queues, l’historique linéaire et une CI consciente des stacks pour éviter de faire fondre vos pipelines.
  • Exécutez des checks rapides à chaque couche ; réservez les suites lourdes pour le haut de stack et la queue.
  • Les flags et les exercices de revert rendent chaque PR sûre à atterrir ou à dérouler indépendamment.
  • Attendez‑vous à 25–40 % de temps‑jusqu’au‑merge plus rapide et à moins d’alertes causées par des conflits ; la dépense CI peut monter sans invalidation de build.
  • Évitez les modes d’échec : stacks infinies, ruées de revue, changements de comportement cachés et dette de flags.
  • Mesurez les métriques DORA et le ré‑ouvrage dû aux conflits ; si elles n’évoluent pas, corrigez le contrôle du scope ou la CI avant de passer à l’échelle.

Auteur : Diogo Hudson Dias

Ready to scale your engineering team?

Tell us about your project and we'll get back to you within 24 hours.

Start a conversation