Uma das maiores capacidades do Embrapa I/O é o de fomentar o desenvolvimento colaborativo de ativos digitais. Para isso, a plataforma faz uso intensivo dos recursos do GIT, possibilitando que manutenções corretivas e evolutivas no código-fonte de diferentes aplicações em projetos distintos possam ser compartilhadas. Este recurso está fortemente embasado no conceito de boilerplates inerente à plataforma, que faz com que toda aplicação criada seja na realidade um fork de um repositório-base. Desta forma, uma vez estabelecido um vínculo entre o repositório-base (upstream) e o derivado (fork), torna-se possível que alterações sejam mescladas (do inglês, merged) do primeiro para o segundo e vice-versa.

É possível, portanto, que erros encontrados ou melhorias identificadas nas apps que remetam ao boilerplate sejam corrigidos e retroalimentem o repositório-base, de forma que novos projetos derivados do mesmo boilerplate se beneficiem destas alterações. Da mesma forma, repositórios derivados já existentes podem ser atualizados a partir das novas revisões do repositório-base, recebendo manutenções corretivas e evolutivas que tenham sido realizadas após sua criação a partir do boilerplate.

Os repositórios de boilerplates são projetos públicos no GitLab da plataforma Embrapa I/O e podem ser acessados por qualquer usuário da plataforma:

Boilerplates como um grupo público no GitLab

Além disso, todo repositório de aplicação tem a indicação (link) de qual repositório-base foi realizado o fork, possibilitando o acesso direto a ele:

Link para o repositório upstream

Uma vez que tenham sido identificadas alterações relevantes no repositório-base, pode-se trazer estas alterações para as aplicações em seu projeto que tenham sido derivadas deste boilerplate. Há diversas formas de fazer isso, mas apresentaremos aqui um passo-a-passo que possibilita fazê-lo de forma simples, utilizando o próprio clone do repositório da aplicação e um cliente GIT em seu ambiente de desenvolvimento local. Para este exemplo, está sendo utilizando o cliente GitKraken.

Utilizando seu cliente GIT, abra o repositório da sua aplicação. Primeiramente, vamos adicionar o repositório do boilerplate original como um novo remote, chamando-o de upstream:

Adicionando o boilerplate como remote

Desta forma, seu repositório estará agora com dois remotes: o origin e o upstream. Em seguida, sincronize a branch main do boilerplate (remote upstream recém adicionado) criando uma branch local denominada boilerplate:

Branch 'boilerplate' criada a partir da 'main' do remote 'upstream'

Faça agora o merge da branch boilerplate para a branch main (ou seja, na prática será um merge da branch main do remote upstream para a branch main do remote origin), resolvendo os conflitos um-a-um:

Commitando o merge

Feito isso, a branch boilerplate pode ser apagada e o remote upstream removido. Para manter sua aplicação atualizada com as manutenções corretivas e evolutivas do boilerplate, basta repetir os passos acima sempre que necessário.