Por que usar solicitações pull em vez de mesclar


16

Qual é a vantagem de usar solicitações pull em vez de simplesmente mesclar uma ramificação no master sem uma? Particularmente em uma equipe em que todos os desenvolvedores têm acesso total ao mestre.


1
As solicitações pull permitem que o gerente de projetos decida se deseja que a filial seja mesclada ou não.
Robert Harvey

Na prática, se todos os desenvolvedores têm acesso ao master, isso faz alguma diferença?
Ganso

2
@Goose Code review?
Babá

4
Não usamos solicitações pull em nossa loja. Meu entendimento das solicitações pull é que elas são usadas principalmente no Github, onde você tem um projeto público de código aberto publicado. Como gerente de projeto, em vez de dar ao mundo inteiro liberdade para fazer alterações arbitrárias (e potencialmente prejudiciais), você exige que as pessoas enviem suas alterações na forma de solicitações pull, para que você possa revisar as alterações deles antes de mesclá-los você mesmo ao ramo mestre.
Robert Harvey

4
Porque é a maneira DVCS de nunca fazer em um simples passo que você pode fazer em 3 ou 4 as complicadas
Mason Wheeler

Respostas:


23

As solicitações pull fornecem verificações e saldos, mesmo que alguém possa pressionar para dominar.

A maior vantagem é que eles oferecem uma oportunidade para revisão de código. A pessoa responsável por executar o pull pode examinar o código e os testes e garantir que eles atendam a qualquer tipo de diretrizes que a organização ou equipe possua. Também existem outros motivos para a revisão de código - educação, localização de defeitos ou aprimoramentos, treinamento cruzado da equipe no sistema, oferecendo aos testadores uma visão em branco do sistema.

Se a pessoa que executa o pull estiver familiarizada com a arquitetura do sistema, poderá garantir que as mudanças se ajustem à visão arquitetônica do sistema, especialmente se a equipe inteira não tiver a visão de longo prazo.

O desenvolvimento do hábito de usar solicitações pull também pode ajudar sua equipe se você decidir no futuro que toda a equipe não deve ter acesso ao mestre. Se sua equipe crescer, e principalmente se você tiver novos membros do produto e / ou novos no Git, não permitir que eles acessem o mestre pode ser mais seguro para a integridade do produto.


5

Tendo feito solicitações de ramificação e garfos de recursos + pull, acho que os pedidos pull oferecem pouca vantagem quando todos vocês estão desenvolvendo na mesma equipe ou empresa

Eles oferecem um bom mecanismo e interface para a revisão de código, mas também complicam e desaceleram todo o processo de 'concluir as coisas'. Especialmente se você tiver muitos recursos pequenos, cada um aguardando revisão, mesclando e todos os outros sendo mesclados com o mestre novamente para obter as alterações, etc. .

Dito isto, você pode fazer solicitações pull entre filiais no mesmo repositório. Você não precisa se bifurcar ou possui permissões diferentes.

Além disso, você deve considerar toda a metodologia e o fluxo de trabalho. Você também tem um sistema de emissão de bilhetes, IC, testes de aceitação automatizados etc.? Suas análises de código fornecem uma verificação única e vital antes da ativação dos códigos ou são apenas exercícios de carimbo de borracha que são redundantes por outras verificações em seu fluxo de trabalho?


4

Há uma observação chamada Lei de Conway, que afirma:

organizações que projetam sistemas ... são constrangidas a produzir projetos que são cópias das estruturas de comunicação dessas organizações.

O que isso tem a ver com solicitações pull? As solicitações pull são um importante canal de comunicação em uma junção crítica para seu código. Eles oferecem uma oportunidade para revisão, teste automatizado e aprimoramento antes que o código avance para os próximos estágios de teste e produção, onde essas mudanças são muito mais difíceis de serem recuperadas e perdem muito mais tempo com muito mais pessoas.

Da mesma forma, a Lei de Conway sugere que se você deseja ter uma arquitetura de microsserviço com áreas de responsabilidade autônoma bem separadas e interfaces bem definidas, os canais de comunicação da sua organização devem refletir a arquitetura que você deseja alcançar. Isso significa que equipes pequenas de 5 a 10 pessoas devem ter acesso direto a qualquer microsserviço, e qualquer pessoa fora dessa equipe deve passar por uma solicitação de recebimento. Isso garante que as pessoas mais familiarizadas com um microsserviço sejam as que analisam e aconselham.

Quando você tem uma organização grande com todos com acesso direto à confirmação em todos os lugares, seus canais de comunicação de menor resistência o preparam para produzir uma grande arquitetura de barro.

Solicitações pull só parecem um fardo se você não trocar nada em troca. Trabalhei em ambientes em que não consigo fazer nada por uma semana porque a compilação está sempre corrompida e trabalhei em ambientes em que alguém envia uma solicitação de recebimento e nem preciso revisá-la porque eles foram interrompidos a criação do IC, e digo-lhe, eles valem cada segundo de esforço.


1

Karl Bielefeldt está exatamente certo. Eu acrescentaria: é tudo sobre qualidade.

Muitas (a maioria?) Lojas não possuem processos formais para governar o desenvolvimento, o que resulta em: "Trabalhei em ambientes onde não consigo fazer nada por uma semana porque a construção está sempre quebrada e trabalhei em ambientes em que alguém envia uma solicitação de recebimento e eu nem preciso revisá-la porque eles quebraram a compilação do IC, e digo, eles valem cada segundo de esforço ".

Realmente vale o esforço.


Obrigado pelo seu comentário. Não sei por que aplicar isso como resposta à pergunta.
Goose

Essa é a única resposta mencionando o IC de pré-mesclagem.
Basilevs

0

Usamos solicitações pull para revisão de código - nenhum código deve ser mesclado no ramo principal de desenvolvimento (normalmente "desenvolva" no nosso caso, mas às vezes "mestre") sem ter passado por uma solicitação pull. Não impomos isso com controles de repositório, mas isso é porque não precisamos - nossos desenvolvedores são maduros o suficiente para não abusar do processo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.