Qu’est-ce que les demandes de tirage ?

Effectué

Nous allons commencer par :

  • Examiner les branches et leur importance vis-à-vis des demandes de tirage.
  • Définir ce qu’est une demande de tirage (pull request).
  • Découvrir comment créer une demande de tirage (pull request), passer en revue les états des demandes de tirage et fusionner une demande de tirage.

Branches

Tout d’abord, nous allons définir ce que sont les branches, pourquoi elles sont importantes pour les développeurs, et de quelle manière elles sont liées aux demandes de tirage.

Les branches sont des espaces de travail isolés où vous pouvez développer votre travail sans affecter les autres utilisateurs du dépôt. Elles vous permettent de développer des fonctionnalités, de corriger des bogues et d’expérimenter de manière sécurisée avec de nouvelles idées dans une zone autonome de votre dépôt.

Le concept de développeurs travaillant sur des branches indépendantes est courant dans le développement moderne de logiciels. En ayant sa propre branche, un développeur peut apporter toute modification, appelée commits, sans avoir à se soucier de la façon dont ses commits affectent les autres développeurs travaillant sur leurs propres branches.

Fusion de branches

Si le fait que chaque développeur travaille sur sa propre branche est très pratique du point de vue de la productivité individuelle, cela ouvre un nouveau défi. À un moment donné, la branche de chaque développeur doit être fusionnée dans une branche commune, par exemple, main. À mesure que les projets évoluent, il peut y avoir de nombreuses fusions à effectuer, et il devient de plus en plus important de suivre et de réviser chaque fusion. Les demandes de tirage interviennent lorsqu’il est nécessaire d’effectuer le suivi des différentes modifications apportées à un projet.

Qu’est-ce qu’une demande de tirage ?

Une demande de tirage est un moyen de documenter les modifications de branche et de faire savoir que les modifications de la branche du développeur sont prêtes à être fusionnées dans la branche de base (principale). Les demandes de tirage permettent aux parties prenantes d’examiner et de discuter des modifications proposées afin de garantir que la qualité du code dans la branche de base reste la plus élevée possible.

Une demande de tirage compare les modifications entre deux branches :

  • La branche de comparaison est la propre branche du développeur qui contient les modifications spécifiques qu’il a apportées.
  • La branche de base, également appelée branche principale, est celle dans laquelle les modifications doivent être fusionnées.

Lors du démarrage d’une demande de tirage, GitHub affiche automatiquement la vue de comparaison des branches.

Créer une demande de tirage (pull request)

Examinons maintenant comment créer une demande de tirage.

  1. Sur GitHub.com, accédez à la page principale du dépôt.

  2. Dans le menu Branche, sélectionnez la branche qui contient vos commits.

    Capture d’écran de la création d’une nouvelle branche et de son nommage.

  3. Au-dessus de la liste des fichiers, dans la bannière jaune, sélectionnez le bouton Comparer et demander un tirage afin de créer une demande de tirage pour la branche associée.

    Capture d’écran d’une zone de texte jaune, mettant en évidence le bouton vert Comparer et faire une demande de tirage.

  4. Dans le menu déroulant Branche de base, sélectionnez la branche dans laquelle vous souhaitez fusionner vos modifications. Sélectionnez ensuite le menu déroulant Comparer la branche pour sélectionner la branche à laquelle vous avez apporté vos modifications.

  5. Entrez un titre et une description pour votre demande de tirage.

  6. Pour créer une demande de tirage prête pour la révision, sélectionnez le bouton Créer une demande de tirage. Pour créer un brouillon de demande de tirage, sélectionnez la liste déroulante, sélectionnez Créer un brouillon de demande de tirage (pull request), puis Brouillon de demande de tirage.

État des demandes de tirage

Examinons maintenant les différents états d’une demande de tirage.

  • Brouillon de demande de tirage : lorsque vous créez une demande de tirage, vous pouvez choisir de créer une demande de tirage prête pour la révision ou un brouillon de demande de tirage. Une demande de tirage à l’état de brouillon ne peut pas être fusionnée, et les propriétaires de code ne sont pas automatiquement invités à réviser les brouillons de demande de tirage.

  • Demande de tirage ouverte : un état ouvert signifie que la demande de tirage est active et n’est pas encore fusionnée dans la branche de base. Vous pouvez toujours effectuer des commits, et discuter et examiner les modifications potentielles avec les collaborateurs.

  • Demande de tirage fermée : vous pouvez choisir de fermer une demande de tirage sans la fusionner dans la branche de base/principale. Cette option est utile si les modifications proposées dans la branche ne sont plus nécessaires ou si une autre solution est proposée dans une autre branche.

  • Demande de tirage fusionnée : l’état fusionné d’une demande de tirage signifie que les mises à jour et les commits de la branche de comparaison ont été combinées avec la branche de base. Toute personne disposant d’un accès en poussée (push) au dépôt peut effectuer la fusion.

Fusionner une demande de tirage

  1. Sous le nom de votre dépôt, sélectionnez Demandes de tirage.

    Capture d’écran de la barre de navigation supérieure d’un référentiel avec l’onglet Demande de tirage en évidence.

  2. Dans la liste Demandes de tirage, sélectionnez la demande de tirage à fusionner.

  3. Faites défiler jusqu’en bas de la demande de tirage. Selon les options de fusion activées pour votre référentiel, vous pouvez :

    • Fusionnez tous les commits dans la branche de base en sélectionnant le bouton Fusionner la demande de tirage. Si l’option Fusionner la demande de tirage ne s’affiche pas, sélectionnez le menu déroulant de fusion, choisissez l’option Créer un commit de fusion, puis le bouton Créer un commit de fusion.

      Capture d’écran du menu déroulant du bouton vert Fusionner la demande de tirage avec l’option Créer une validation de fusion sélectionnée.

    • Fusion Squash et fusion vous permet de prendre tous vos commits et de les combiner en un commit unique. Cette option permet de conserver l’historique de votre dépôt plus lisible et organisé. Sélectionnez l’option Fusion Squash, puis le bouton Fusion Squash.

    • L’option Rebaser et fusionner vous permet d’effectuer des commits sans commit de fusion. Cela conserve un historique de projet linéaire. Sélectionnez le menu déroulant de fusion, ensuite choisissez l’option Rebaser et fusionner, puis le bouton Rebaser et fusionner.

  4. Si vous y êtes invité, entrez un message de commit ou acceptez le message par défaut.

  5. Si vous avez plusieurs adresses e-mail associées à votre compte sur GitHub.com, sélectionnez le menu déroulant d’adresse e-mail et sélectionnez celle à utiliser comme adresse e-mail de l’auteur Git. Seules les adresses e-mail vérifiées apparaissent dans ce menu déroulant. Si vous avez activé la confidentialité de l’adresse de messagerie, un e-mail GitHub sans réponse est utilisé comme adresse e-mail de l’auteur de validation par défaut.

    Capture d’écran d’une modification de validation avec une zone de description et le menu déroulant de l’adresse e-mail à sélectionner comme auteur de la validation.

  6. Sélectionnez Confirmer la fusion, Confirmer la fusion Squash et fusion ou Confirmer le rebaser et fusionner.

  7. Si vous le souhaitez, vous pouvez supprimer la branche de comparaison afin de désencombrer la liste des branches dans votre dépôt.

Options avancées de demande de tirage (pull request)

Outre la création et la fusion de demandes de tirage, il existe quelques options avancées qui aident les équipes à maintenir du code de haute qualité.

Demande de réviseurs

Vous pouvez demander des collaborateurs spécifiques pour passer en revue votre demande de tirage. Seuls les collaborateurs disposant d’un accès en écriture au référentiel peuvent être sélectionnés en tant que réviseurs. Cela permet de s’assurer que vos modifications sont examinées par les bonnes personnes avant de fusionner.

  1. Lors de la création ou de l’affichage d’une demande de tirage, recherchez la section Réviseurs dans la barre latérale droite.
  2. Recherchez et sélectionnez les noms d’utilisateur GitHub des collaborateurs qui ont accès en écriture au référentiel.
  3. Les réviseurs sélectionnés recevront une notification pour passer en revue votre demande de tirage.

Révisions requises et règles de protection des branches

Certains référentiels utilisent des règles de protection de branche qui exigent que les demandes de tirage répondent à certaines conditions avant de pouvoir être fusionnées. Les exigences courantes sont les suivantes :

  • Au moins une révision approuvée d’un autre collaborateur.
  • Passage de toutes les vérifications d’état requises, telles que les flux de travail d’intégration continue (CI).

Si une demande de tirage ne répond pas à ces exigences, le bouton de fusion est désactivé tant que toutes les conditions ne sont pas remplies.

Vous pouvez voir les règles requises pour un référentiel en bas de la page de demande de tirage, sous la section Fusionner.

Ces règles sont généralement configurées par les administrateurs de référentiel dans les paramètres de protection de branche.

Vérifications d’état et intégration continue (CI)

Si votre référentiel utilise GitHub Actions ou un autre système CI, les demandes de tirage peuvent exécuter automatiquement des vérifications d’état lorsque des modifications sont apportées. Voici quelques exemples :

  • Exécution de tests unitaires
  • Vérification de la mise en forme du code
  • Vérification des analyses de sécurité

Les demandes de tirage doivent généralement passer toutes les vérifications d’état requises avant de pouvoir être fusionnées dans la branche de base. Les vérifications ayant échoué sont affichées directement sur la page de demande de tirage.

Enregistrement de référentiels avec des étoiles

Lorsque vous trouvez un dépôt que vous souhaitez revoir facilement plus tard, vous pouvez l’afficher sur GitHub. En vedette un dépôt l’enregistre dans votre liste personnelle de favoris et montre votre appréciation aux mainteneurs du référentiel.

Pour afficher un référentiel :

  1. Accédez à la page du référentiel sur GitHub.com.
  2. Dans le coin supérieur droit, sélectionnez le ⭐ bouton Étoile .

Vous pouvez afficher tous les référentiels que vous avez sélectionnés en sélectionnant votre image de profil, puis vos étoiles.

Raccourcis clavier

GitHub propose de nombreux raccourcis clavier pour vous aider à avancer plus rapidement dans votre travail.

Pour afficher tous les raccourcis disponibles :

  • Appuyez ? n’importe où sur GitHub.com.

Vous verrez une liste de raccourcis pour la navigation dans les problèmes, les demandes de tirage (pull requests), les dépôts et bien plus encore.

Utilisation de la palette de commandes

La palette de commandes sur GitHub vous aide à accéder rapidement aux pages, à exécuter des actions courantes ou à rechercher des référentiels sans prendre vos mains hors du clavier.

Pour ouvrir la palette de commandes :

  • Appuyez Ctrl+K sur (Windows/Linux) ou ⌘+K (Mac).

Vous pouvez commencer à taper des actions telles que « Créer une demande de tirage », « Afficher les problèmes » ou « Changer de branche » pour accéder instantanément à l’endroit où vous avez besoin.

Appliquer ce que vous avez appris

Vous allez à présent effectuer un exercice qui applique à un scénario réel les différents points que nous venons de voir.