Trabalhando em sistemas monolíticos com git sparse-checkout

A versão 2.25 do git lançada recentemente possibilita que o desenvolvedor atualize apenas uma parte de um repositório.

Este comando é experimental e seu comportamento poderá mudar nas próximas releases do git.

Nota: se a versão do git que você está usando é inferior a 2.25, siga este tutorial para atualizar.

O problema

Digamos que você e sua equipe trabalham em um repositório grande, por exemplo um sistema monolítico onde: backend e frontend estão no mesmo repositório, e você é um front-end que precisa atualizar apenas a parte que lhe cabe. Com a atualização do git 2.25 é possível fazer isso de forma fácil.

A solução: git sparse-checkout

Faremos um passo a passo de como usar este novo comando, para isso vou usar como exemplo o repositório geekcom/validator-docs, que é uma biblioteca Laravel para validação de documentos do Brasil.

Passo 1: Clone o repositório;

$ git clone https://github.com/geekcom/validator-docs

Passo 2: Entre no repositório que você acabou de clonar;

$ cd validator-docs/

Passo 3: Confira a estrutura de pastas do projeto;

$ ls
changelog-linker.yml
CHANGELOG.md
composer.json
LICENSE
phpcs.xml
phpunit.xml
README.md
/src
/tests

A visualização na IDE fica assim;

Estrutura de pastas completa

Neste projeto temos alguns arquivos e duas pastas: /src e /tests.

Passo 4: Inicie o sparse-checkout no modo recursivo;

$ git sparse-checkout init --cone

Neste modo todas as pastas dentro dos diretórios serão incluídas.

Passo 5: Selecione as pastas que deseja trabalhar;

$ git sparse-checkout set src tests

É possível listar as pastas selecionadas com git sparse-checkout list.

$ git sparse-checkout list
src
tests

Observe que apenas as pastas que você setou estão visíveis.

Estrutura do projeto

Passo 6: Siga seu fluxo de trabalho como de costume;

Faça alterações nos códigos, adicione, faça commit, etc. Depois confira o resultado deste artigo aqui.

Conclusão

Com a inclusão desse novo comando o git torna extremamente fácil trabalhar com repositórios grandes como geralmente são os sistemas monolíticos. É uma grande evolução que deveria ao menos ser testada por todo desenvolvedor que se preze.

Artigo desenvolvido por Daniel Rodrigues – PHP Sofware Engineer do Grupo FCamara

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *