Introduction
GitHub a introduit une nouvelle fonctionnalité appelée Stacked PRs, qui permet aux utilisateurs d'organiser les pull requests en une pile ordonnée et de les fusionner en un seul clic. Chaque pull request représente une couche focalisée des modifications, révisée de manière indépendante et intégrée ensemble.
Contexte Technique
Les pull requests empilés sont une série de pull requests dans le même référentiel, où chaque pull request cible la branche de la pull request en dessous, formant une chaîne ordonnée qui aboutit finalement à la branche principale. GitHub comprend les piles de bout en bout : l'interface utilisateur des pull requests affiche une carte de pile pour que les réviseurs puissent naviguer entre les couches, les règles de protection des branches sont appliquées à la branche cible finale (et non seulement à la base directe), et les exécutions de l'interface de ligne de commande (CI) sont effectuées pour chaque pull request de la pile comme si elles ciblaient la branche finale.
La commande gh stack gère le flux de travail local : création de branches, gestion des rebases, publication sur GitHub et création de pull requests avec les branches de base correctes. Sur GitHub, l'interface utilisateur des pull requests fournit aux réviseurs le contexte dont ils ont besoin : une carte de pile pour la navigation, des différences focalisées pour chaque couche et une application correcte des règles.
Analyse et Implications
Les grandes pull requests sont difficiles à réviser, lentes à fusionner et sujettes aux conflits. Les réviseurs perdent le contexte, la qualité des commentaires diminue et l'ensemble de l'équipe ralentit. Les pull requests empilés résolvent ce problème en divisant les grandes modifications en une chaîne de petites pull requests focalisées qui s'empilent les unes sur les autres, chacune pouvant être révisée de manière indépendante.
Perspective
Pour commencer à utiliser les pull requests empilés, vous pouvez consulter le guide de démarrage rapide ou lire la présentation complète. Il est important de noter que cette fonctionnalité peut améliorer la collaboration et la gestion des modifications de code, mais il est essentiel de comprendre les mécanismes et les limites de cette fonctionnalité pour en tirer le meilleur parti.