web-dev-qa-db-fra.com

Comment faire des correctifs avec les demandes d'extraction GitHub

Mise en garde: je suis assez nouveau pour git et GitHub.

Donc, dans ma configuration actuelle, mon équipe utilise des correctifs git flow (généralement démarrés et terminés par un outil graphique tel que GitKraken ou IntelliJ) pour apporter des modifications qui doivent être fusionnées en deux branches et poussées en amont dans les deux. Ainsi, par exemple, le flux serait:

  1. Tirer le dernier du maître
  2. Démarrer le correctif
  3. Valider les modifications
  4. Fusionner la branche du correctif dans le maître et développer et pousser les deux en amont

Nous envisageons maintenant de déplacer notre code dans GitHub et souhaitons commencer à utiliser les demandes de tirage, pour deux raisons:

  • Crochets CI pour exécuter des tests et des trucs
  • un endroit pour mettre des commentaires spécifiques au code qui ne sont pas directement liés au "problème" sous-jacent
  • évitant à tout le monde de devoir constamment tirer le dernier master/develop sur leur machine locale afin de pouvoir fusionner les modifications

Mais dans le cas des correctifs, je ne sais pas quoi faire car je fusionne en deux branches mais c'est vraiment une "action", donc la création manuelle de deux demandes de tirage semble bizarre, en particulier depuis l'étape 4) dans notre flux actuel. un simple clic.

Existe-t-il un moyen intelligent de gérer cela? Mon cas idéal serait que le fait d'appuyer sur le bouton Fusionner de la demande d'extraction fusionnerait simplement dans les deux, mais cela ne semble pas être une option disponible.

34
Dan

Comme vous l'avez mentionné, une demande d'extraction n'a qu'une une branche cible, vous ne pourrez donc pas envoyer le correctif aux deux master et develop en fusionnant une Pull Request.

Je suis également surpris que vous mentionniez votre étape # 4 - fusionner la branche du correctif à la fois master et develop et Push upstream - est une action. Bien qu'il y ait de fortes chances que la fusion de hotfix vers master ne se heurte pas à des conflits de fusion, je ne peux pas en dire autant de la fusion de hotfix vers develop car il aurait pu être travaillé depuis le dernier déploiement en production.

Ma recommandation serait alors la suivante:

  • Créez un PR de hotfix à master et demandez à quelqu'un de le vérifier pour valider le correctif
  • Une fois qu'il est fusionné dans master, créez un autre PR de hotfix vers develop et voyez si vous rencontrez des conflits de fusion
    • Si tel est le cas, résolvez les conflits de fusion afin que le PR se retrouve dans un état à fusionner, et demandez à quelqu'un d'examiner le PR
    • S'il n'y a pas de conflits de fusion, demandez à quelqu'un d'examiner le PR

Une solution alternative, si vous voulez vraiment emprunter le chemin automatisé, serait de tirer parti à la fois des webhooks GitHub et de l'API.

Le webhook vous permettrait d'être notifié lorsqu'un PR est fusionné . Vous pouvez inspecter la charge utile pour vous assurer que la branche de base commence par hotfix/ et la branche cible est master. Vous pouvez ensuite réagir à cet événement en utilisant l'API pour créer un nouveau PR de la même branche hotfix vers develop.

Cela impliquera un certain développement, et l'effort pourrait ne pas valoir la peine, car la création d'un PR via l'interface utilisateur est toujours assez facile et rapide.

30
Mickaël Derriey