← L'édition
IANouveau3 min de lecture

GitHub officialise les stacked pull requests pour accélérer les revues de code

GitHub annonce la disponibilité générale des stacked pull requests (demandes de fusion empilées), une fonction qui permet de découper un changement majeur en plusieurs petites demandes interdépendantes. Les projets qui l'utilisent enregistrent une hausse de 9 % de code fusionné et une accélération des validations. Cette sortie apporte une gestion optimisée des approbations, des signatures et des outils en ligne de commande.

Fil « Disponibilité générale des pull requests empilées (stacked PRs) sur GitHub »

Illustration de l'article — github.blog
Image : github.blog

Découper des fonctionnalités complexes en petites étapes logiques évite les demandes de modification gigantesques, mais la gestion manuelle des branches dépendantes devenait vite complexe. Avec le passage en disponibilité générale des stacked pull requests (demandes de fusion de code empilées les unes sur les autres), GitHub intègre nativement ce flux de travail. Durant la phase de préversion, les dépôts utilisant les piles de PR (pull requests, ou demandes de fusion) ont enregistré une augmentation de 9 % du code fusionné. Plus des deux tiers du top 1 % des dépôts les plus actifs utilisent désormais cette méthode, constatant une amélioration de 5 % du time-to-merge (durée nécessaire pour faire approuver et intégrer du code).

Des réalignements et des fusions plus flexibles

Cette version finale apporte des ajustements importants au comportement du rebase (action de réaligner l'historique d'une branche sur une autre). Désormais, lorsqu'une pile est réalignée sans modification de son code source, les approbations données par l'équipe restent valides, même si le dépôt est configuré pour réinitialiser les avis lors des mises à jour. De plus, GitHub crée des commits (enregistrements de modification de code) de remplacement signés numériquement pour conserver la paternité et respecter les règles de sécurité. En cas de fusion globale, la pile entre dans la file d'attente comme un groupe unique, générant un commit de fusion par PR. Enfin, si une branche parente est supprimée, la pile se réaligne automatiquement sur la nouvelle branche de base.

Navigation, raccourcis et intégration dans les outils CLI

Pour faciliter la relecture au quotidien, les informations de la pile restent affichées dans l'en-tête de la page de la PR. La navigation entre les différentes dépendances d'une pile s'effectue directement au clavier via les raccourcis Shift + J et Shift + K. L'écosystème s'enrichit aussi d'un événement stacked dans les webhooks (notifications automatiques envoyées via HTTP aux systèmes tiers) liés aux demandes de fusion. Côté terminal, l'extension gh stack de la CLI (interface en ligne de commande de GitHub) gère à présent les Git worktrees (dossiers de travail Git multiples sur un même dépôt) pour accélérer le passage d'une branche à l'autre.

# L'extension CLI gh stack prend désormais en charge les Git worktrees
gh stack --help

Citations et disponibilité

L'impact sur l'organisation des équipes est souligné par David Mostoller, ingénieur logiciel chez Comcast :

Voir chaque branche de la pile directement dans l'interface utilisateur de GitHub, vérifier le statut de chacune et naviguer entre elles rend la gestion et la revue de nombreuses PR dépendantes beaucoup plus simple.

Charlie Marsh, fondateur d'Astral chez OpenAI, note également qu'une seule fusion a suffi pour constater l'efficacité du système. La fonctionnalité d'auto-merge (fusion automatique dès que les règles de validation sont remplies) sera déployée dans les prochaines semaines. Les piles de demandes de fusion sont disponibles sur tous les plans de github.com et seront intégrées prochainement dans une mise à jour de GitHub Enterprise Server (l'offre hébergée pour les entreprises).