Pourquoi utiliser les demandes de tirage au lieu de fusionner

16

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.

OIE
la source
1
Les demandes d'extraction permettent au chef de projet de décider s'il souhaite ou non fusionner la branche en maître.
Robert Harvey
En pratique, si tous les développeurs ont accès au master, cela fait-il une différence?
Goose
2
Revue @Goose Code?
nounou
4
Nous n'utilisons pas de demandes de tirage dans notre boutique. D'après ce que je comprends des demandes de tirage, elles sont principalement utilisées sur Github, où vous avez publié un projet open-source public. En tant que chef de projet d'un tel projet, plutôt que de laisser le monde entier libre cours à votre projet pour apporter des modifications arbitraires (et potentiellement nuisibles), vous demandez plutôt aux gens de soumettre leurs modifications sous la forme de demandes d'extraction, afin que vous puissiez les consulter leurs modifications avant de les fusionner vous-même dans la branche principale.
Robert Harvey
4
Parce que c'est le moyen DVCS de ne jamais faire en une seule étape ce que vous pouvez faire en 3 ou 4 étapes compliquées
Mason Wheeler

Réponses:

23

Les demandes de tirage 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 existe également d' 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 peut ne pas avoir 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.

Thomas Owens
la source
5

Après avoir fait à la fois des branchements de fonctionnalités et des fourches + des 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 `` finalisation 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 votre méthodologie et de votre flux de travail. Avez-vous également un système de billetterie, CI, des tests d'acceptation automatisés, etc.? Vos revues de code fournissent-elles une vérification unique vitale avant la mise en ligne 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?

Ewan
la source
4

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.

Karl Bielefeldt
la source
1

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 besoin de l'examiner parce qu'il a cassé la construction de CI, et je vous le dis, cela vaut chaque seconde d'effort. "

Cela en vaut vraiment la peine.

user255231
la source
Merci pour votre commentaire. Je ne sais pas pourquoi appliquer cela comme réponse à la question.
Goose
C'est la seule réponse mentionnant l'IC pré-fusion.
Basilevs
0

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.

Philip Kendall
la source