Motivação

Uma situação muito comum quando mantemos um projeto opensource, é que outros desenvolvedores façam um fork do nosso repositório e com o tempo submetam melhorias ou correções de bugs para nosso repositório através de um Pull Request.

Algumas vezes, torna-se interessante realizarmos um checkout do Pull Request localmente, em nossa máquina. Isso pode ser útil nas seguintes situações (tomando como base minha modesta experiência com projetos opensource ):

Sendo assim, vamos aprender a resolver esses incovenientes com as ferramentas que o git nos oferece. Este tutorial foi testado com o Github, porém acredito que o mesmo processo possa ser realizado em outros serviços que suportam git como Gitlab, Bitbucket e etc.

Este tutorial exige um certo nível de conhecimento prévio com git. Como por exemplo, saber o conceito de Pull Request, branch e push. Qualquer dúvida, é só postar nos comentários. :)

Realizando o checkout de um Pull Request

O primeiro passo é descobrir o ID do Pull Request. Ele normalmente fica do lado direito do título, precedido pelo símbolo #.

Na imagem de exemplo, logo acima, podemos observar que o ID do Pull request é 39. De posse dessa informação, vamos então realizar uma cópia local do Pull Request. Isso pode ser feito com o seguinte comando:

git fetch origin pull/ID/head:NOMEBRANCH

Onde:

Uma vez que o comando tenha sido executado, veremos uma mensagem semelhante a esta:

From github.com:author/nome_repositorio
 * [new ref] refs/pull/39/head -> NOMEBRANCH

Se executarmos o comando git branch, veremos a branch recém-criada listada entre as outras branchs.

$ git branch
* master
  NOMEBRANCH

Agora, basta trocar para a nova branch com

git checkout NOMEBRANCH

e realizar os testes.

No caso em que desejamos inserir modificações no conteúdo do Pull Request, nós realizamos os seguintes passos:

Conclusão

Bom, chegamos ao fim de mais um tutorial. Tentei apresentar de maneira objetiva os procedimento que utilizo quando me deparo com algumas das situações descritas no início do tutorial, sendo assim tive de ser mais direto nas explicações. Então caso tenha ficado alguma dúvida, é só postar nos comentários.

É isso pessoal. Até o próximo tutorial.

Referências