Terminer, abandonner ou rétablir les demandes de tirage

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Une fois que tous les réviseurs requis ont approuvé votre demande de tirage (pull request) et que la demande de tirage répond à toutes les exigences de stratégie de branche, vous pouvez fusionner vos modifications dans la branche cible et terminer la demande de tirage. Ou si vous décidez de ne pas procéder aux modifications apportées à la demande de tirage, vous pouvez abandonner la demande de tirage.

Pour répondre aux modifications des réviseurs et répondre aux commentaires de révision et les résoudre, consultez Commentaires d’adresse.

Prérequis

  • Les référentiels doivent être activés sur votre projet. Si le hub Repos et les pages associées ne s’affichent pas, consultez Activer ou désactiver un service Azure DevOps pour réactiver Repos.

  • Pour terminer votre demande de tirage, vous devez être membre du groupe de sécurité Contributeurs, ou disposer des autorisations correspondantes dans le projet dans lequel se trouve la demande de tirage.

  • Pour contribuer à une demande de tirage, vous devez être membre du groupe de sécurité Lecteurs ou disposer des autorisations correspondantes.

  • Pour afficher ou passer en revue les demandes de tirage, vous devez disposer d’un accès de base ou supérieur au projet Azure DevOps.

  • Si vous n’êtes pas membre du projet auquel vous souhaitez contribuer, soyez ajouté.

    Notes

    Pour les projets publics, les utilisateurs autorisés à accéder aux Parties prenantes ont un accès complet à Azure Repos.

  • Les référentiels doivent être activés sur votre projet. Si le hub Repos et les pages associées ne s’affichent pas, consultez Activer ou désactiver un service Azure DevOps pour réactiver Repos.
  • Pour effectuer une demande de tirage, vous devez être membre du groupe de sécurité Contributeurs ou disposer des autorisations correspondantes dans le projet que vous souhaitez modifier.
  • Pour contribuer à une demande de tirage, vous devez être membre du groupe de sécurité Lecteurs ou disposer des autorisations correspondantes.
  • Pour afficher ou passer en revue les demandes de tirage, vous devez être membre du projet Azure DevOps avec un accès de base ou supérieur. Si vous n’êtes pas membre du projet, soyez ajouté.

Vérifier les modifications de fusion

Lorsque vous effectuez une demande de tirage, Git ajoute une nouvelle validation de fusion à la fin de la branche main. Cette validation de fusion lie les historiques précédents de la branche primaire et de la branche source de demande de tirage. Pour afficher l’aperçu de la validation de fusion et rechercher conflits de fusion, sélectionnez le menu Autres options en haut à droite dans une page Vue d’ensemble de la demande de tirage, puis sélectionnez Afficher les modifications de fusion.

Si vous avez modifié la branche cible après avoir créé la demande de tirage, sélectionnez Redémarrer la fusion pour créer une validation de fusion en préversion et mettre à jour l’affichage des différences de modification de fusion.

Capture d’écran montrant les options Afficher la fusion et redémarrer la fusion dans le menu Autres options de la demande de tirage.

Passer en revue les stratégies de branche

Teams peut définir des stratégies de branche qui exigent que les demandes de tirage dans les branches protégées répondent à des critères spécifiques avant que les demandes de tirage puissent être fusionnées. Vous pouvez voir les stratégies de branche en vigueur pour votre demande de tirage, si elles sont requises pour la fusion et si la demande de tirage est en cours de transmission ou d’échec.

L’onglet Vue d’ensemble de la demande de tirage récapitule les stratégies de branche qui passent ou échouent pour la demande de tirage. La vue d’ensemble répertorie uniquement les stratégies ayant échoué, mais vous pouvez voir toutes les vérifications de stratégie en sélectionnant Afficher <n> vérifications.

Dans la page Vue d’ensemble des demandes de tirage, les exigences de stratégie de branche ont une icône . Sélectionnez Plus d’options en regard de l’exigence, puis sélectionnez Afficher la stratégie pour accéder à la page Stratégies de branche dans Paramètres du projet.

Capture d’écran montrant afficher la stratégie en regard d’une exigence de stratégie de branche dans une Vue d’ensemble.

Terminer une demande de tirage

Une fois que vous avez résolu les conflits de fusion et que la demande de tirage répond à toutes les stratégies de branche et dispose de toutes les approbations requises, vous pouvez effectuer la demande de tirage.

  1. Sélectionnez Terminer en haut à droite pour terminer la demande de tirage. Ou sélectionnez la flèche déroulante en regard du bouton Terminer, puis sélectionnez l’une des options.

    Capture d’écran montrant les options du bouton Terminer pour la demande de tirage.

    • Terminer : effectuez la demande de tirage maintenant et fusionnez les modifications apportées à la branche cible.
    • Définir la saisie semi-automatique : configurez la demande de tirage pour qu’elle se termine et fusionne une fois qu’elle répond à toutes les stratégies de branche requises.
    • Marquer comme brouillon : renvoyer la demande de tirage au brouillon status et supprimer tous les votes.
    • Abandon : fermez la demande de tirage sans fusionner les modifications.
  2. Dans le volet Terminer la demande de tirage, sous Type de fusion, sélectionnez l’une des options de fusion.

    Capture d’écran montrant la boîte de dialogue demande de titrage complète.

    • Fusionner (pas d’avance rapide) : fusionner avec un historique non linéaire qui conserve toutes les validations.
    • Validation Squash : fusionnez avec un historique linéaire qui combine toutes les validations sources en une seule validation sur la cible, ou squashing fusionne la demande de tirage. N’oubliez pas qu’une nouvelle validation est créée pour la branche cible sans conserver l’historique de validation de la branche source.
    • Rebaser et transférer rapidement: rebasez les validations sources sur la cible et vers l’avant rapide.
    • Fusion semi-linéaire : rebasez les validations sources sur la cible et créez une fusion à deux parents.

    Notes

    Les stratégies existantes sont appliquées. Par exemple, si votre branche a actuellement une stratégie « squashing fusion uniquement », vous devez modifier cette stratégie si vous souhaitez utiliser un autre type de fusion.

  3. Sélectionnez l’une des options de post-achèvement suivantes. Certaines options ne sont pas disponibles pour certains types de fusion.

    • Terminer les éléments de travail associés après la fusion : effectuez tous les éléments de travail liés.
    • Supprimer <le nom de la branche> après la fusion : supprimez la branche source de la demande de tirage après la fusion.
    • Personnaliser le message de validation de fusion : ajoutez un message de validation de fusion personnalisé. Si vous sélectionnez cette option, mettez à jour le message de validation de fusion.
    • Remplacer les stratégies de branche et activer la fusion. Forcez la fusion même si la demande de tirage ne satisfait pas toutes les stratégies de branche. Cette option n’est disponible que si vous disposez de l’autorisation Exempt de l’application de stratégie.
  4. Sélectionnez Complete merge (Terminer la fusion).

  1. Sélectionnez Terminer en haut à droite pour terminer la demande de tirage. Ou sélectionnez la flèche déroulante en regard du bouton Terminer, puis sélectionnez l’une des options suivantes :

    Capture d’écran montrant les options du bouton Terminer pour la demande de tirage.

    • Terminer : effectuez la demande de tirage maintenant et fusionnez les modifications apportées à la branche cible.
    • Définir la saisie semi-automatique : si vous avez des stratégies de branche, configurez la demande de tirage pour qu’elle se termine et fusionne une fois qu’elle répond à toutes les stratégies de branche requises.
    • Abandon : fermez la demande de tirage sans fusionner les modifications.
  2. Dans l’écran Terminer la demande de tirage, entrez le message pour la validation de fusion et mettez à jour la description de la demande de tirage.

    Boîte de dialogue Terminer la demande de tirage

  3. Sélectionnez l’une des options suivantes :

    • Terminez les éléments de travail liés après la fusion pour terminer tous les éléments de travail liés.

    • Supprimez <branch name> après la fusion pour supprimer la branche source de la demande de tirage.

    • Effectuer un squash des changements en cas de fusion vers fusion Squash de votre demande de tirage (pull request). N’oubliez pas qu’une nouvelle validation est créée pour la branche cible sans conserver l’historique de validation de la branche source.

    • Remplacez les stratégies de branche et activez la fusion pour forcer la fusion d’une branche même si elle ne répond pas à toutes les stratégies de branche. Cette option n’est disponible que si vous disposez des autorisations Exempt de l’application de stratégie.

      Notes

      Les stratégies existantes sont toujours appliquées. Par exemple, si votre branche dispose actuellement d’une stratégie « fusion Squash uniquement » en place, vous devez modifier cette stratégie afin d’utiliser les autres types de fusion.

  4. Sélectionnez Complete merge (Terminer la fusion).

Lorsque vous terminez la fusion, tous les éléments de travail liés se mettent automatiquement à jour pour afficher l’achèvement de la demande de tirage.

Capture d’écran des éléments de travail liés montrant les demandes de tirage terminées.

Rebaser pendant l’achèvement de la demande de tirage

Il existe quelques situations où le rebasing pendant la demande de tirage (pull request) n’est pas possible :

  • Si une stratégie sur la branche cible interdit l’utilisation de stratégies de rebase, vous avez besoin de l’autorisation Remplacer les stratégies de branche pour le rebasage.
  • Si la branche source de demande de tirage a des stratégies, vous ne pouvez pas la rebaser. Le rebasing modifierait la branche source sans passer par le processus d’approbation de stratégie.
  • Si vous avez utilisé l’extension de conflit de fusion pour résoudre les conflits de fusion, vous ne pouvez pas rebaser. Les résolutions de conflit appliquées à une fusion tridirectionnel sont rarement réussies ou valides lors du rebasage de toutes les validations de demande de tirage individuellement.

Dans tous ces cas, vous pouvez toujours rebaser votre branche localement, puis envoyer (push) en amont, ou fusionner vos modifications lorsque vous terminez la demande de tirage.

Problème de base d’une fusion multiple

Dans certains cas, une demande de tirage possède plus d’une véritable base de fusion, et cette situation peut entraîner des problèmes de sécurité. Si les fichiers de la demande de tirage ont des versions différentes entre les bases de fusion, un avertissement de base de fusion multiple se produit. Pour plus d’informations et de correction, consultez plusieurs bases de fusion.

Résoudre les conflits de fusion

Les modifications de fichier dans votre branche peuvent entrer en conflit avec les modifications d’une autre branche. Lorsqu’il n’est pas clair comment fusionner les modifications, Git affiche les fichiers en conflit sur la page Vue d’ensemble de la demande de tirage. Vous devez résoudre les conflits de fusion entre la branche de demande de tirage et la branche cible avant de pouvoir fusionner une demande de tirage ou de définir la demande de tirage sur la saisie semi-automatique. Pour obtenir des instructions sur la résolution des conflits de fusion, consultez Résoudre les conflits de fusion.

Capture d’écran montrant les conflits de fusion sous l’onglet Vue d’ensemble d’une demande de tirage.

Définir une demande de tirage sur la saisie semi-automatique

Sélectionnez Définir la saisie semi-automatique dans la liste déroulante Terminer pour terminer et fusionner les modifications de demande de tirage dès que les conditions satisfont à toutes les stratégies de branche. Une fois la demande de tirage terminée, vous recevez une notification par e-mail. Si un conflit ou une erreur empêche l’exécution de la demande de tirage, un e-mail vous avertit du problème.

Notes

L’option Définir la saisie semi-automatique est disponible dans Azure Repos et TFS 2017 et versions ultérieures lorsque vous avez des stratégies de branche. Si vous ne voyez pas Définir la saisie semi-automatique, vous n’avez aucune stratégie de branche. Pour plus d’informations, consultez Stratégies de branche.

Par défaut, une demande de tirage définie sur la saisie semi-automatique attend uniquement sur les stratégies requises. Dans le panneau Activer la saisie semi-automatique, vous pouvez également choisir d’attendre les stratégies facultatives.

Capture d’écran montrant la modification d’une stratégie facultative à obligatoire dans le volet Activer la saisie semi-automatique.

À compter de TFS 2018 Update 2, la page Vue d’ensemble de la demande de tirage affiche la liste des critères de stratégie en attente. Si vous définissez une stratégie comme obligatoire dans le volet Activer la saisie semi-automatique, vous pouvez la définir comme facultative dans la page Vue d’ensemble.

Sélectionnez Annuler la saisie semi-automatique pour désactiver la saisie semi-automatique.

Capture d’écran d’une demande de tirage dans l’état de saisie semi-automatique.

Capture d’écran d’une demande de tirage dans l’état de saisie semi-automatique.

Une demande de tirage définie sur la saisie semi-automatique affiche un badge de saisie semi-automatique sur la page Demandes de tirage.

Capture d’écran montrant une saisie semi-automatique dans la liste des demandes de tirage.

Abandonner ou réactiver une demande de tirage

Pour abandonner vos modifications et votre demande de tirage sans fusionner, sélectionnez Abandonner dans la liste déroulante du bouton Terminer. Vous pouvez toujours afficher la demande de tirage abandonnée et elle reste liée aux éléments de travail.

Pour réactiver une demande de tirage abandonnée à tout moment, ouvrez la demande de tirage à partir de l’onglet Abandonné dans la vue Demande de tirage, puis sélectionnez Réactiver en haut à droite.

Rétablir une demande de tirage terminée

Pour annuler les modifications d’une demande de tirage, procédez comme suit. Pour plus d’informations, consultez Annuler les modifications.

  1. Ouvrez la demande de tirage terminée, puis sélectionnez Rétablir. Cette action crée une nouvelle branche avec des modifications qui annulent la demande de tirage dans une branche cible existante de votre référentiel.

  2. Dans le volet Rétablir la demande de tirage :

    1. Sous Branche cible, sélectionnez la branche dans laquelle vous souhaitez annuler les modifications de demande de tirage.
    2. Sous Nom de la branche de rubrique obligatoire, modifiez le nom de la branche de demande de tirage de rétablissement si vous le souhaitez.
    3. Sélectionnez Rétablir.
  3. Dans l’écran Nouvelle demande de tirage, sélectionnez Créer.

  4. Fusionnez la nouvelle demande de tirage pour terminer le rétablissement.

Notes

La branche créée lors de ce rétablissement a un seul commit qui rétablit toutes les modifications de fichier par rapport à la demande de tirage d’origine. La branche ne contient pas de validation rétablie pour chacun des commits dans la demande de tirage d’origine.

Étapes suivantes