web-dev-qa-db-fra.com

Pourquoi utiliser les demandes de tirage au lieu de fusionner

Quel est l'avantage d'utiliser des demandes de tirage au lieu de simplement fusionner une branche en maître sans en avoir une? Surtout dans une équipe où tous les développeurs ont un accès complet au master.

17
Goose

Les requêtes Pull prévoient des freins et contrepoids, même si n'importe qui peut pousser à maîtriser.

Le plus grand avantage est qu'ils offrent une possibilité de révision du code. La personne responsable de l'exécution de l'extraction peut consulter le code et les tests et s'assurer qu'ils respectent toutes les directives de l'organisation ou de l'équipe. Il y a aussi autres raisons pour la révision du code - éducation, recherche de défauts ou d'améliorations, formation croisée de l'équipe sur le système, donnant aux testeurs une vue en boîte blanche du système.

Si la personne qui effectue la traction est familière avec l'architecture du système, elle peut s'assurer que les changements correspondent à la vision architecturale du système, surtout si toute l'équipe n'a pas la vision à long terme.

Développer une habitude d'utiliser les demandes de tirage peut également aider votre équipe si vous décidez à l'avenir que toute l'équipe ne devrait pas avoir accès au master. Si votre équipe s'agrandit, et surtout si vous avez des membres de l'équipe qui sont nouveaux dans le produit et/ou nouveaux dans Git, ne pas leur donner accès au master peut être plus sûr pour l'intégrité du produit.

24
Thomas Owens

Après avoir fait à la fois des branchements de fonctionnalités et des forks + demandes de pull, je pense que les requêtes de pull offrent peu d'avantages lorsque vous évoluez tous dans la même équipe ou entreprise

Ils offrent un bon mécanisme et une bonne interface pour la révision du code, mais compliquent et ralentissent également l'ensemble du processus de `` fin des choses ''. Surtout si vous avez de nombreuses petites fonctionnalités, chacune en attente de révision, de fusion, puis toutes les autres sont à nouveau fusionnées avec master pour tirer les modifications, etc. .

Cela dit, vous pouvez faire des requêtes d'extraction entre les succursales sur le même référentiel. Vous n'avez pas à bifurquer ou à avoir des autorisations différentes.

De plus, vous devez tenir compte de l'ensemble de la méthodologie et du flux de travail. Avez-vous également un système de billetterie, CI, des tests d'acceptation automatisés, etc.? Vos révisions de code fournissent-elles une vérification unique vitale avant la mise en service des codes, ou s'agit-il simplement d'exercices de tampons en caoutchouc qui sont redondés par d'autres vérifications dans votre flux de travail?

5
Ewan

Il y a une observation appelée la loi de Conway qui dit:

les organisations qui conçoivent des systèmes ... sont contraintes de produire des conceptions qui sont des copies des structures de communication de ces organisations.

Qu'est-ce que cela a à voir avec les demandes de tirage? Les demandes d'extraction sont un canal de communication majeur à une jonction critique pour votre code. Ils offrent une opportunité de révision, de test automatisé et d'amélioration avant que le code ne passe aux prochaines étapes de test et de production, où ces changements sont beaucoup plus difficiles à annuler et perdent beaucoup plus de temps pour beaucoup plus de personnes.

De même, la loi de Conway suggère que si vous souhaitez avoir une architecture de microservices avec des zones de responsabilité autonome clairement séparées et des interfaces bien définies, les canaux de communication de votre organisation doivent refléter l'architecture que vous souhaitez réaliser. Cela signifie que les petites équipes de 5 à 10 personnes devraient avoir un accès direct à tout microservice donné, et toute personne en dehors de cette équipe devrait être tenue de passer par une demande d'extraction. Cela garantit que les personnes les plus familiarisées avec un microservice sont celles qui l'examinent et le conseillent.

Lorsque vous avez une grande organisation avec tout le monde ayant un accès direct de validation partout, vos canaux de communication de moindre résistance vous mettent en place pour produire une grosse boule d'architecture de boue.

Les demandes de tirage ne se sentent comme un fardeau que si vous n'échangez rien en retour. J'ai travaillé dans des environnements où je ne peux rien faire pendant une semaine parce que la construction est toujours cassée, et j'ai travaillé dans des environnements où quelqu'un soumet une demande de tirage et je n'ai même pas besoin de l'examiner parce qu'il s'est cassé la construction CI, et je vous le dis, ils valent chaque seconde d'effort.

4
Karl Bielefeldt

Karl Bielefeldt a parfaitement raison. J'ajouterais: c'est une question de qualité.

De nombreux magasins (la plupart?) N'ont aucun processus formel en place pour régir le développement, ce qui se traduit par: "J'ai travaillé dans des environnements où je ne peux rien faire pendant une semaine car la construction est toujours cassée et j'ai travaillé dans des environnements où quelqu'un soumet une demande de tirage et je n'ai même pas à l'examiner parce qu'il a cassé la construction de CI, et je vous le dis, cela vaut chaque seconde d'effort. "

Cela vaut vraiment IS vaut l'effort.

1
user255231

Nous utilisons les demandes de tirage pour la révision du code - aucun code ne doit être fusionné dans la branche principale de développement (normalement "développer" dans notre cas, mais parfois "maître") sans avoir été soumis à une demande de tirage. Nous n'appliquons pas cela avec des contrôles de référentiel, mais c'est parce que nous n'avons pas à le faire - nos développeurs sont suffisamment matures pour ne pas abuser du processus.

0
Philip Kendall