Skip to main content

Fusion de pull requests en pile

Fusionnez une pile du bas vers le haut, individuellement ou dans des groupes contigus.

Remarque

Cette fonctionnalité est disponible en préversion publique et peut être modifiée.

Les pull requests empilées sont fusionnées de bas en haut (en commençant par celles qui sont les plus proches de la branche principale).

  • Vous pouvez fusionner n’importe quel nombre de demandes de tirage à la fois, tant qu’elles forment un groupe contigu à partir de la demande de tirage non fusionnée la plus basse.
  • Vous ne pouvez pas fusionner une demande de tirage intermédiaire en isolation, les demandes de tirage en dessous de celle-ci sont toujours fusionnées avec elle.

Exigences pour la fusion

L’encadré de fusion d’une pile de pull requests affiche l’état de l’ensemble de la pile, et pas seulement celui de la pull request actuelle. Avant qu’une pull request de la pile puisse être fusionnée, les conditions suivantes doivent être remplies :

  • Toutes les pull requests en dessous sont approuvées et ont passé tous les contrôles.
  • La pile présente un historique linéaire.
  • La pull request actuelle respecte toutes les exigences de protection des branches pour la branche de base de la pile, telles que main.

Si la pile n’est pas linéaire, par exemple après que des modifications ont été envoyées vers une branche inférieure ou après que la branche principale a avancé, un bouton Rebase stack apparaît dans l’encadré de fusion et vous devez rebaser la pile avant de pouvoir la fusionner.

Remarque

  • Si vous effectuez des fusions via l’API et souhaitez utiliser des pull requests en pile, vous devrez mettre à jour votre code pour utiliser la nouvelle API de fusion pour les stacks. Consultez « Points de terminaison d’API REST pour les pull requests ».
  • La fusion automatique n’est pas prise en charge pour les pull requests en pile.

Fusion à l’aide d’une file d’attente de fusion

Les piles prennent entièrement en charge les files d’attente de fusion. Toutes les pull requests de la pile sont ajoutées à la file d’attente dans le bon ordre. Si une pull request est retirée de la file d’attente ou en est éjectée, toutes les pull requests situées au-dessus d’elle dans la pile sont également retirées.

Remarque

Pour conserver une pile ensemble, la file d’attente de fusion permet au groupe de fusion de dépasser sa taille maximale configurée de jusqu’à 50 %. Si la pile est trop grande pour s’adapter à cette mémoire tampon, elle est automatiquement répartie entre les groupes de fusion consécutifs.

Fusion à partir du bas vers le haut

  1. Accédez à la demande de tirage non fusionnée la plus basse dans la pile ou à une demande de tirage supérieure si vous souhaitez fusionner un groupe contigu jusqu’à ce point.

  2. Vérifiez que la pull request et toutes les pull requests en dessous remplissent les conditions requises pour la fusion.

  3. Fusionner la requête de tirage. La demande de tirage sélectionnée et toutes les demandes de tirage non fusionnées situées en dessous de celle-ci se retrouvent sur la branche de base en tant qu’opération unique, classées à partir du bas dans l’historique résultant.

Après la fusion, la pull request non fusionnée suivante est automatiquement rebasée pour cibler directement la base de la pile ; elle passe ainsi en bas de la pile et est prête à être examinée et fusionnée.

Une fois que chaque pull request de la pile a été fusionnée, la pile est complète et ne peut plus être étendue. Si vous ajoutez de nouvelles branches au-dessus et exécutez gh stack submit, GitHub CLI crée automatiquement une nouvelle pile enracinée dans le tronc pour ces branches.