Explorar monorepo versus múltiplos repositórios
Um repositório é onde o histórico de trabalho é armazenado, geralmente em um subdiretório git.
Como você deve organizar seu repositório de código? As equipes de desenvolvimento visam separar preocupações em seus softwares e repositórios. Com o passar do tempo, não é incomum que os repositórios de código fiquem confusos com artefatos e códigos irrelevantes.
Quando se trata de organizar seus repositórios, há duas filosofias principais: usar um único repositório (Monorepo) ou vários repositórios.
- Monorepos é um padrão de controle do código-fonte em que todo o código-fonte é mantido em um repositório. É fácil dar a todos os funcionários acesso a tudo de uma vez. Clone isso, e pronto.
- Organizar seus projetos em repositórios separados é conhecido como vários repositórios.
A diferença fundamental entre o repositório mono e várias filosofias de repositório é o que permite que as equipes trabalhem juntas com mais eficiência. Em um cenário extremo, a visão de múltiplos repositórios sugere que cada subequipe pode trabalhar em seu repositório. Ele permite que eles trabalhem em suas respectivas áreas usando as bibliotecas, ferramentas e fluxos de trabalho de desenvolvimento que otimizam sua produtividade.
O custo de consumir qualquer coisa não desenvolvida em um determinado repositório é equivalente ao uso de uma biblioteca ou serviço de terceiros, mesmo que tenha sido escrito por alguém sentado nas proximidades.
Se você encontrar um bug em sua biblioteca, deverá resolvê-lo no repositório correspondente. Depois de publicar um novo artefato, você pode retornar ao repositório e fazer as alterações de código necessárias. No entanto, se o bug estiver em uma base de código diferente ou envolver bibliotecas, ferramentas ou fluxos de trabalho diferentes, talvez seja necessário buscar assistência do proprietário desse sistema e aguardar sua resposta.
Ao usar a exibição de repositório mono, o gerenciamento de grafos de dependência complexos pode aumentar a dificuldade de usar um único repositório. Os benefícios de permitir que diferentes equipes trabalhem de forma independente não são substanciais. Algumas equipes podem encontrar uma maneira eficiente de trabalhar, mas isso pode não ser verdade para todos os grupos. Além disso, outras equipes podem escolher uma abordagem abaixo do ideal, negando quaisquer benefícios obtidos por outras pessoas. A consolidação de todo o trabalho em um repositório mono permite que você se concentre em monitorar de perto esse único repositório.
O incômodo de fazer alterações em outros repositórios ou esperar que as equipes façam alterações para você é evitado em um repositório mono em que qualquer pessoa pode alterar qualquer coisa.
Se você descobrir um bug em uma biblioteca, corrigi-lo é tão fácil quanto encontrar um bug em seu próprio código.
Nota
No Azure DevOps, é comum usar um repositório separado para cada solução associada em um projeto.