Est-il préférable de démarrer une requête Pull ou d'effectuer une validation de fusion locale sur le maître?

12

J'utilise GitHub depuis un certain temps maintenant et j'avais l'habitude de pousser mes branches de fonctionnalités puis de lancer une Pull Request que j'ai moi-même fusionnée. J'ai trouvé que cela m'a aidé à garder une trace de l'endroit où j'ai fusionné les succursales.

Mais récemment, j'ai lu de plus en plus sur le fonctionnement de Git et j'ai réalisé que je pouvais utiliser les merge-commits pour faire référence à la fusion de branches.

Alors, que dois-je faire lors de la fusion d'une branche de fonctionnalité en maître:
effectuer une fusion-validation sur le maître puis la pousser en amont OU pousser la branche locale et démarrer une demande de tirage?

J'ai lu Présentation des demandes de tirage pour une équipe de 2 personnes - fusionner mes propres demandes? et Quel est le flux de travail avec 2 personnes sur un projet et dois-je ouvrir les demandes de tirage d'une succursale sur le référentiel officiel ou ma fourchette? mais aucun d'eux ne semble répondre à ce que je recherche.

Ashhar Hasan
la source
2
Selon vous, que manque-t-il exactement à ces réponses?
RubberDuck
Le premier en parle du fait que les demandes de retrait sont censées être examinées par des pairs. Le second propose un workflow. Le troisième n'est même pas lié.
Ashhar Hasan
1
Je regarde cela d'un point de vue des meilleures pratiques ou comment maintenir un bon point de vue historique git .
Ashhar Hasan
1
Lorsque je fusionne un PR, je le fais en fusionnant la branche localement. Cela me permet de m'assurer que la fusion s'applique correctement et de relancer les tests avant de publier le résultat. Les requêtes Pull de GitHub ne sont qu'une formalisation de ce flux de travail, Git lui-même n'a pas de concept de relations publiques.
amon
2
Quand un PR est fusionné, il produit un commit de fusion sur master, donc je ne pense pas que cela fasse une différence dans l'historique git. Ainsi, je ne pense pas qu'il y ait de raison d'utiliser l'un ou l'autre en dehors de votre préférence personnelle entre la ligne de commande et l'interface utilisateur de Github.
Ixrec

Réponses:

15

mécanisme git-fusion:
L' utilisation git merge featurependant maître fusionne la branche featureà masteret produit un merge-commit(si la branche ne peut pas être transmis-rapide) dans l'histoire git. Pour forcer une merge-commitcréation, utilisez l' --no-ffoption avec merge.

Mécanisme de fusion de demande de tirage:
lorsque nous démarrons une demande de tirage sur GitHub, il crée un GitHub Issueendroit où les gens peuvent parler et discuter des validations dans le PR avant de le fusionner. Lorsqu'un PR est fusionné sur GitHub, il fait exactement la même chose que git merge feature.

Que devrais-je faire?
Donc, en ce qui concerne l'histoire, il n'y a pas de différence entre les deux.
Et en ce qui concerne la contribution, vos contributeurs n'auront rien de différent pour les deux situations. Ce sont les mêmes (moins le joli petit chat).

Meilleures pratiques:
Et je n'ai pas pu trouver de meilleures pratiques, mais la logique dit que les RP ne sont pas très utiles s'il n'y a qu'une seule personne dans le référentiel.

@lxrec et @amon m'ont aidé à parvenir à cette conclusion.

Ashhar Hasan
la source
5
Astuce: git mergepeut ne pas enregistrer un commit de fusion s'il peut effectuer une «avance rapide». Pour forcer un commit de fusion, vous pouvez ajouter l' --no-ffoption.
amon
Je préfère faire git-merge sur local plutôt que le faire sur githuib.com, si je devais faire quoi que ce soit sur github.com, je préférerais ne pas faire directement sur la branche principale, je préférerais prendre une branche non principale qui peut d'abord être mis en mode intermédiaire avant de le rendre disponible pour la production.
Ciasto piekarz
5

Comme l'a dit Ashhar , techniquement et historiquement, il n'y a pas de différence. Pour les projets avec une petite équipe, je préfère fusionner directement au lieu de l'étape supplémentaire de création d'un PR. Cependant, lorsqu'une fonctionnalité doit être revue / commentée ou lorsqu'il s'agit d'un WIP et que plus d'une personne y travaillera, j'ai tendance à ouvrir un PR et à ajouter une liste de tâches à la description du PR.

Notez que git mergepeut utiliser l'avance rapide s'il n'y a pas de modifications à master, vous pouvez donc utiliser git merge --no-ff. J'ai tendance à ne pas le faire.

Donc, en résumé, n'utilisez les RP que lorsque vous avez besoin de discussion. Sinon, fusionnez directement.

Louay Alakkad
la source
1
Il convient également de mentionner que la discussion et les commentaires sur une demande d'extraction peuvent provenir de sources automatisées ainsi que des membres de l'équipe. Si vous avez un serveur CI configuré, il peut donner des résultats de génération et de test afin de ne jamais fusionner quelque chose qui rompt la génération sur le maître.
Eric