DEV Community

Mateus Andrade
Mateus Andrade

Posted on

Atualizando forks no Github com um bot 🤖😱

Já faz um tempo que queria escrever um artigo, mas sempre acabava esbarrando em algumas "barreiras" que eu mesmo colocava: falta de tempo, dúvida sobre o que escrever, insegurança, etc, etc. 🤔🤔🤔

thinking-batman

Fonte: Giphy

Mas hoje isso mudou e vou falar de uma ferramenta bem bacana, disponível no Github chamada: pull.

Pull? Wat?

Se você em algum momento já trabalho com controle de versionamento, já deve estar familíarizado com a seguinte rotina: você chega cedo no trabalho, pega seu café, e começa o dia com um git push.

typing-guy

Fonte: Giphy

Só que ...

To github.com:MateusAndrade/use-cep-hook.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:MateusAndrade/use-cep-hook.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Claro, o bom e velho git pull, ou caso você queria dar pull de outra branch com git pull origin minha-branch-topper já resolveriam seu problema. 😊

Porém, ao usar forks esse processo acaba sendo um pouco diferente.

O que é um fork?

Segundo a própria documentação do Github:

After using GitHub by yourself for a while, you may find yourself wanting to contribute to someone else’s project. Or maybe you’d like to use someone’s project as the starting point for your own. This process is known as forking.

Traduzindo: após uma bom tempo mexendo nos próprios projetos, você pode querer ajudar no projeto de outra pessoa com um "cópia" sua. Esse processo recebe o nome de forking(ou apenas fork).

Em resumo, ao fazer fork de um projeto X você cria uma cópia desse projeto associada a sua conta, algo como SeuNomeDeUsuario/X.

fork-image

Fonte: https://miro.medium.com/max/2696/1*a9cDsKIG0JFXkN0yVfG82Q.png

Atualizando forks manualmente... 💬

Bem, como todo processo processo que já foi automatizado, também existe a maneira manual de fazer o mesmo que pode ser vista aqui.

Em resumo: se trata de trackear a base do seu fork, usando o comando

git remote add upstream https://github.com/userName/repo.git

Atualizando forks automaticamente 😱

Mas indo ao ponto que vim falar hoje, vamos fazer sobre o pull(bot).

Basicamente é um bot/app Github que trackeia as alterações na base do seu fork, envia uma PR pro seu fork e faz o merge sem nenhuma interação.

Pra configurar ele na sua conta, basta acessar a url dele na listagem de apps do Github: https://github.com/apps/pull e seguir com o processo de configuração.

Após isso...depois de algumas horas, o bot vai verificar as diferenças entre a base do seu fork e vai criar uma PR automaticamente. Um exemplo: https://github.com/MateusAndrade/react-native-share/pull/20

Screen-Shot-2020-04-06-at-23-12-23

Fonte: https://ibb.co/nR58YmC

Com isso você vai economizar alguns git pull durante o seu dia. Lembrando, que o bot faz essa atualização após algumas horas.

gif

Fonte: Giphy

Fontes:

Top comments (1)

Collapse
 
carloscne profile image
Carlos Queiroz

Show de bola! Obrigado por compartilhar.