Jutilise GitHub depuis un certain temps maintenant et javais lhabitude de pousser mes branches de fonctionnalités, puis de lancer une Pull Request que jai moi-même fusionnée. Jai trouvé que cela ma aidé à garder une trace de lendroit où jai fusionné les branches.

Mais récemment, jai lu de plus en plus sur le fonctionnement de Git et jai réalisé que je pouvais utiliser les merge-commits pour me référer lorsque jai fusionné branches.

Alors, que dois-je faire lors de la fusion dune branche de fonctionnalité dans master:
Effectuez un merge-commit sur master puis poussez-le en amont OU Pousser la branche locale et démarrer une Pull Request?

Jai lu Présentation des Pull Requests pour une équipe de 2 personnes – fusionner mes propres requêtes? et Quel est le flux de travail avec 2 personnes sur un projet et Dois-je ouvrir des pull requests depuis une branche sur le dépôt officiel ou mon fork? mais aucun dentre eux ne semble répondre à ce que je recherche.

Commentaires

  • Que pensez-vous exactement qui manque à ces réponses?
  • Le premier en parle dans le sens où les pull requests sont censées être revues par les pairs. Le second propose un workflow. Le troisième nest même pas ' lié.
  • Je regarde cela à partir des Bonnes pratiques ou Comment maintenir un bon point de vue historique de git .
  • Quand je fusionne un PR, je le fais en fusionnant la branche localement. Cela me permet de massurer que la fusion sapplique correctement et de réexécuter les tests avant de publier le résultat. Les requêtes dextraction de GitHub ' ne sont quune formalisation de ce flux de travail, Git lui-même na pas de concept de PR.
  • Lorsquun PR est fusionné, il produit une fusion commit sur master, donc je ne pense ' que cela fait une différence dans lhistorique de git. Ainsi, je ne pense ' quil y a aucune raison dutiliser lun ou lautre en dehors de votre préférence personnelle entre la ligne de commande et linterface utilisateur de Github.

Réponse

mécanisme git-merge:
Lutilisation de git merge feature sur le maître fusionne la branche feature en master et produit un merge-commit (si la branche ne peut pas être avancée rapidement) dans lhistorique git. Pour forcer la création dune merge-commit, utilisez loption --no-ff avec merge.

Mécanisme de Merge Pull Request:
Lorsque nous démarrons une Pull Request sur GitHub, cela crée un GitHub Issue où les gens peuvent parler et discuter des commits dans le PR avant de le fusionner. Lorsquun PR est fusionné sur GitHub, il fait exactement la même chose que git merge feature.

Que dois-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 pas faire quelque chose de différent pour les deux situations. Ce sont les mêmes (sans le joli petit chat).

Bonnes pratiques:
Et je nai pas pu trouver de bonnes pratiques, mais la logique dit que les PR ne sont pas très utiles sil ny a quun seul contributeur à un référentiel.

@lxrec et @amon mont aidé à arriver à cette conclusion.

Commentaires

  • Astuce: git merge peut ne pas enregistrer un commit de fusion sil peut effectuer une «avance rapide». Pour forcer un commit de fusion, vous pouvez ajouter loption --no-ff.
  • Je préfère faire git-merge en local plutôt que de le faire sur githuib.com, si je aurait à quelque chose comme sur github.com Je préférerais ne pas faire directement sur la branche maître, je préférerais prendre une branche non-maître qui peut dabord être définie en mode intermédiaire avant de la rendre disponible pour la production.

Réponse

Comme Ashhar la dit, techniquement et historiquement, il ny a pas de différence. Pour les projets avec petite équipe Je préfère fusionner directement au lieu de létape supplémentaire de création dun PR. Cependant, quand une fonctionnalité a besoin de révision / commentaires ou quand il sagit dun WIP et que plusieurs personnes travailleront dessus, jai tendance à ouvrir un PR et à ajouter un liste des tâches à la description du PR.

Notez que git merge peut utiliser une avance rapide sil ny a pas de changements dans le maître, vous pouvez donc utiliser git merge --no-ff. Jai tendance à ne pas le faire.

Donc, en résumé, nutilisez que PR s lorsque vous avez besoin de discussion. Sinon, fusionnez simplement directement.

Commentaires

  • Il ' est également intéressant de mentionner que la discussion et les commentaires sur une pull request peuvent proviennent de sources automatisées ainsi que des membres de léquipe. Si vous avez configuré un serveur CI, il peut donner des résultats de compilation et de test afin que vous ne fusionniez jamais quelque chose qui rompt la compilation sur le maître.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *