Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,35 @@ Imagine que um grupo está escrevendo um livro em conjunto. Cada pessoa escreve
* Ele é um pedido para que alterações sejam revisadas e incorporadas ao projeto.
* Em vez de modificar diretamente o código do projeto, a pessoa sugere mudanças e pede a aprovação de outras pessoas.

## Como Era Feito Antes?

Antes da existência dos PRs, colaborar em um projeto era muito mais complicado. Imagine que duas pessoas estão escrevendo um livro juntas, mas cada uma está usando um caderno diferente. Para juntar os textos, era preciso mandar as páginas por carta ou e-mail, e a outra pessoa teria que copiar e colar manualmente no livro final. Se houvesse erros ou sugestões, o processo de revisar e modificar seria bem mais demorado.

No mundo do desenvolvimento, antes dos PRs, as mudanças no código eram enviadas por e-mail em arquivos separados. Quem administrava o projeto tinha que baixar, comparar e juntar tudo manualmente, o que aumentava o risco de erros e tornava a colaboração muito mais lenta.

Os **PRs foram criados para facilitar esse processo**, trazendo:

* **Revisão de código integrada**: Outras pessoas podem comentar e sugerir melhorias.
* **Histórico claro de alterações**: O GitHub mostra exatamente o que mudou.
* **Menos erros**: Como há revisão antes da fusão (merge), menos _bugs_ chegam ao código principal.
## Outros modelos...

O GitHub introduziu o modelo de Pull Requests, como uma visão alternativa para o
modelo tradicional que o git foi desenvolvido. Funcionalidade essa que foi adota
por outros serviços de hospedagem de código, como o GitLab, Bitbucket, codeberg,
entre outros. Lembre-se, o git em si é um sistema distribuido de controle de
versão, e não uma plataforma centralizada de hospedagem de código. Isso
significa, entre outras coisas, que o git foi desenvolvido para ser trabalhado
de forma distribuida, através do e-mail, que por si só é um sistema distribuido
(você pode enviar e receber e-mails de qualquer provedor do mundo). Portanto, o
git, em sua essência, tem a habilidade de distribuir os códigos e mudanças
gerando um patch (remendo em inglês) que pode ser enviado por e-mail para
qualquer pessoa, e essa pessoa pode aplicar esse patch em seu repositório local.

A parte do distribuido entra nesse aspecto, porque, esse modelo, para funcionar
(tal qual o kernel do Linux, o próprio git, e muitos outros projetos open
source) precisam ter uma lista de emails para onde essas mudanças são enviadas e
naturalmente, qualquer pessoa que subscrevesse essa lista de e-mails poderia
contribuir com a discussão e o desenvolvimento do projeto. Esse modelo é,
naturalmente, mais complexo e mais lento do que o modelo de Pull Requests,
visando que o mesmo consegue centralizar e manter referência de todas as
mudanças propostas em um único lugar, facilitando a revisão e o gerenciamento
das contribuições.

Os **PRs facilitam esse processo em um modelo mais centralizado**, trazendo:

* **Revisão de código integrada**: Outras pessoas naquele repositório podem comentar e sugerir melhorias.
* **Histórico claro de alterações**: O GitHub mostra um histórico das versões e o que mudou.
* **Integração com outras funcionalidades do GitHub**: O GitHub pode rodar testes automáticos, verificar conflitos e muito mais.

## O nome "Pull Request"

Expand Down