Solicitação pull vs solicitação de mesclagem

468

Qual é a diferença entre uma solicitação de recebimento e uma solicitação de mesclagem.

No Github, é uma solicitação de recebimento e no GitLab, por exemplo, é uma solicitação de mesclagem ... Existe alguma diferença entre os dois?

Pacane
fonte

Respostas:

765

De gitlab "pedido merge" recurso é equivalente a do GitHub "pull request" recurso. Ambos são meios de extrair alterações de outra ramificação ou bifurcação para sua ramificação e mesclar as alterações com o código existente. São ferramentas úteis para revisão de código e gerenciamento de alterações.

Um artigo do GitLab discute as diferenças na nomeação do recurso:

Solicitações de mesclagem ou recebimento são criadas em um aplicativo de gerenciamento git e solicitam que uma pessoa designada mescle duas ramificações. Ferramentas como GitHub e Bitbucket escolhem a solicitação de extração de nome, pois a primeira ação manual seria extrair a ramificação do recurso. Ferramentas como GitLab e Gitorious escolhem a solicitação de mesclagem de nomes, pois essa é a ação final solicitada ao responsável. Neste artigo, vamos nos referir a eles como solicitações de mesclagem.

Uma "solicitação de mesclagem" não deve ser confundida com o git mergecomando Nem uma "solicitação de recebimento" deve ser confundida com o git pullcomando. Ambos os gitcomandos são usados ​​nos bastidores em solicitações pull e solicitações de mesclagem, mas uma solicitação de mesclagem / recepção se refere a um tópico muito mais amplo do que apenas esses dois comandos.

gilly3
fonte
1
O GitHub cria uma ramificação intermediária / temporária (invisível) quando uma solicitação de recebimento é feita?
Robert Koritnik
1
@stevemao podemos acessá-los? Eles são realmente apenas de leitura, pois podemos resolver conflitos sobre eles?
Robert Koritnik
11
o que estou perdendo? pull = buscar + mesclar. Se a ação final for mesclada, a primeira ação deverá ser buscada.
Vytenis Bivainis
61
MR é apenas um nome melhor ao redor. O Pull Request nunca fez sentido para mim até ler sua explicação sobre a primeira ação, enquanto entendi o que Merge Request significa no segundo em que o li pela primeira vez. "olá, você poderia mesclar este código para ramificar mestre?" vs "olá, você poderia colocar esse código em um ramo invisível para <fusão implícita>" - há um vencedor claro aqui.
Granitosaurus
7
@Granitosaurus Agreed. Como iniciante no git, os pedidos pull não eram absolutamente o que eu esperava que fossem. Quando comecei a usar o Gitlab, as solicitações de mesclagem fizeram sentido imediatamente.
Mark Lyons
54

Eles são o mesmo recurso

Solicitações de mesclagem ou recebimento são criadas em um aplicativo de gerenciamento git e solicitam que uma pessoa designada mescle duas ramificações. Ferramentas como GitHub e Bitbucket escolhem a solicitação de extração de nome, pois a primeira ação manual seria extrair a ramificação do recurso. Ferramentas como GitLab e Gitorious escolhem a solicitação de mesclagem de nomes, pois essa é a ação final solicitada ao responsável. Neste artigo, vamos nos referir a eles como solicitações de mesclagem.

- https://about.gitlab.com/2014/09/29/gitlab-flow/

rneves
fonte
a fusão não deve ser responsabilidade do desenvolvedor que está adicionando um novo recurso? se um desenvolvedor A adicionar um recurso no feature_branch, ele deverá pegar a ramificação principal e mesclá-la na parte superior de sua ramificação, resolver todos os conflitos e testá-la antes de criar a solicitação de mesclagem?
Ciasto piekarz
2
Sim, mas ainda há uma junção de avanço rápido que alguém precisa fazer depois para obter o código mestre. E, na verdade, acho que em uma equipe de desenvolvedores em tempo integral provavelmente é melhor se o desenvolvedor do recurso também se fundir, mas pode ser útil esperar que alguém revise seu PR primeiro.
precisa saber é
21

No meu ponto de vista, eles significam a mesma atividade, mas de perspectivas diferentes:

Pense nisso, Alice faz alguns commit no repositório A, que foi bifurcado no repositório B. de Bob

Quando Alice quer "mesclar" suas alterações em B, ela realmente quer que Bob "retire" essas alterações de A.

Portanto, do ponto de vista de Alice, é uma "solicitação de mesclagem", enquanto Bob a vê como uma "solicitação de extração".

K. Símbolo
fonte
Isso me lembrou o exemplo quando fiz um pequeno relatório para informar outros colegas como o git funciona.
Ravi Yadav
4

Há uma diferença sutil em termos de gerenciamento de conflitos. Em caso de conflito, uma solicitação de recebimento no Github resultará em uma confirmação de mesclagem na ramificação de destino . No Gitlab, quando um conflito é encontrado, as modificações feitas estão em uma consolidação de mesclagem na ramificação de origem .

Consulte https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html

"O GitLab resolve conflitos criando um commit de mesclagem no ramo de origem que não é automaticamente mesclado no ramo de destino. Isso permite que o commit de mesclagem seja revisado e testado antes que as alterações sejam mescladas, impedindo que alterações indesejadas entrem no ramo de destino sem revisar ou quebrar a compilação ".

iclman
fonte
3

O GitLab 12.1 (julho de 2019) apresenta uma diferença:

" Mesclar solicitações para problemas confidenciais "

Ao discutir, planejar e resolver problemas confidenciais, como vulnerabilidades de segurança, pode ser particularmente desafiador para projetos de código aberto permanecerem eficientes, pois o repositório Git é público.

https://about.gitlab.com/images/12_1/mr-confidential.png

A partir da versão 12.1, agora é possível resolver problemas confidenciais em um projeto público em um fluxo de trabalho otimizado usando o botão Criar solicitação de mesclagem confidencial, que ajuda a criar uma solicitação de mesclagem em uma bifurcação privada do projeto.

Consulte " Problemas confidenciais " do problema 58583 .

Um recurso semelhante existe no GitHub, mas envolve a criação de uma bifurcação privada especial, chamada " aviso de segurança do mantenedor ".

VonC
fonte
0

Como mencionado nas respostas anteriores, ambos têm quase o mesmo propósito. Pessoalmente, gosto do git rebase e da solicitação de mesclagem (como no gitlab). Isso reduz a carga do revisor / mantenedor, certificando-se de que, ao adicionar a solicitação de mesclagem, o ramo do recurso inclua todas as confirmações mais recentes feitas no ramo principal após a criação do ramo do recurso. Aqui está um artigo muito útil que explica a rebase em detalhes: https://git-scm.com/book/en/v2/Git-Branching-Rebasing

Muhammad Shahbaz
fonte