Chapters ▾ 2nd Edition

A2.1 Appendix B: Incorporando o Git nos seus Aplicativos - Linha de Comando do Git

Se o seu aplicativo é feito para desenvolvedores, as chances são altas de que ele poderia se beneficiar de alguma integração com o controle de versão de fonte. Mesmo aplicativos que não sejam para desenvolvedores, tais como os editores de documentos, podem potencialmente se beneficiar de funções em controle de versão, e o modelo do Git funciona muito bem em relação a muitos cenários distintos.

Se você precisar de integrar o Git junto com seu aplicativo, você tem basicamente duas opções: executar um shell e chamar pelo programa do git a partir da sua linha de comandos, ou ainda, no caso incorporar uma biblioteca do Git dentro de seu próprio aplicativo. Neste ponto abordaremos sobre integração com a linha de comandos e em diversas das bibliotecas incorporáveis para o Git que dispõem da maior popularidade.

Linha de Comando do Git

Uma opção é iniciar um processo de shell e usar a ferramenta de linha de comando do Git para realizar o trabalho. Essa abordagem tem a vantagem de ser canônica e oferecer suporte a todos os recursos do Git. Ela também é bastante fácil, pois a maioria dos ambientes de execução oferece um mecanismo relativamente simples para iniciar um processo com argumentos de linha de comando. No entanto, essa abordagem tem algumas desvantagens.

Uma delas é que toda a saída está em texto simples. Isso significa que você terá de interpretar o formato de saída do Git, que muda ocasionalmente, para ler informações de andamento e resultado, o que pode ser ineficiente e propenso a erros.

Outra é a falta de recuperação de erros. Se um repositório estiver corrompido de alguma forma ou o usuário tiver um valor de configuração malformado, o Git simplesmente se recusará a executar muitas operações.

Outra ainda é o gerenciamento de processos. O Git exige que você mantenha um ambiente de shell em um processo separado, o que pode acrescentar uma complexidade indesejada. Coordenar muitos desses processos (especialmente quando vários deles podem acessar o mesmo repositório) pode ser um grande desafio.