Polyrepo a partir de um monorepo com 25 repositórios embutidos pede dois caminhos
[!NOTE] Resumo Executivo (DEV-2026-089): O monorepo local não tinha remoto próprio e guardava cerca de 25 repositórios embutidos sem .gitmodules. A migração usou subtree split para o que estava rastreado direto e renomeação para o que já tinha repositório.
🚨 O Desafio Técnico / Contexto
Desktop VB.NET e C++, web PHP e Laravel e infraestrutura conviviam na mesma pasta, com necessidades de acesso diferentes. Faltava repartir por domínio sem perder histórico e sem misturar projetos de terceiros.
💡 Principais Lições Aprendidas & Descobertas
- 💡 Pasta rastreada direto sai com git subtree split e push para o repositório novo. Repositório embutido só precisa ser renomeado no GitHub, o que preserva histórico e cria redirecionamento.
- 💡 git filter-repo limpou o histórico do cliente desktop antes da publicação, removendo uma biblioteca de 77 MB.
- 💡 O nome desejado pode estar ocupado por um fork antigo na própria conta. Renomeie o fork antes, para liberar o nome ao servidor real.
- 💡 Projetos de terceiros não entram nos repositórios próprios nem são renomeados.
- 💡 Repositórios antigos sobrepostos ficam para decisão humana. Definir qual é o canônico não é tarefa de automação.
🛠️ Especificação Técnica & Código-Chave
git subtree split --prefix=<pasta> -b export/<repo>
git push https://github.com/<conta>/<repo>.git export/<repo>:main
📈 Impacto no Ecossistema & Valor Prático
Cada componente passou a ter repositório privado próprio, com acesso controlado por domínio.
- Projetos Relacionados:
lorentz-client,lorentz-omnichannel,lorentz-docs - Registro de Origem:
_data/daily.dev-17.yml
Publicado originalmente como parte do Diário de Desenvolvimento 2026 do ecossistema Artes do Sul & Araguaci.