Sobre o projeto

O Simgit é uma ferramenta de linha de comando projetada para criar e gerenciar worktrees Git com maior eficiência de disco e isolamento, principalmente para cenários envolvendo vários agentes de IA ou esforços de desenvolvimento paralelo em um único repositório. Ele consegue isso utilizando mecanismos de copy-on-write (CoW), garantindo que arquivos inalterados em vários worktrees compartilhem espaço físico em disco em vez de serem duplicados. A ferramenta oferece suporte a vários sistemas operacionais e sistemas de arquivos: * macOS (APFS): utiliza clonefile nativo sem dependências. * Linux (btrfs, xfs): usa capacidades nativas de reflink sem dependências. * Linux (ext4, etc.): recorre ao fuse-overlayfs para funcionalidade CoW sem exigir root ou módulos do kernel. * Windows: não tem suporte direto, mas pode ser usado no WSL com um sistema de arquivos Linux compatível. O Simgit opera sem daemon ou servidor, contando com o Git para referências e com o sistema de arquivos para gerenciamento de dados. Cada worktree funciona como um checkout vinculado padrão do Git, proporcionando isolamento total para branches, índices e árvores de trabalho. Isso permite que agentes trabalhem em paralelo em seus próprios branches e integrem alterações por meio de merges normais do Git. O principal benefício é o custo marginal de cada worktree adicional, que é significativamente menor do que o de uma cópia completa via git worktree. Medições mostram custos que escalam com o número de caminhos rastreados (aproximadamente ~0,4 KiB por caminho rastreado mais ~60 KiB de sobrecarga fixa no APFS), e não com o tamanho do conteúdo. Isso o torna particularmente eficiente para repositórios com arquivos grandes. O Simgit oferece comandos para adicionar, listar, remover e coletar lixo de worktrees. O comando sg run facilita a inicialização de agentes dentro desses worktrees isolados, permitindo que interajam com o repositório como se fosse um checkout comum. Ele oferece suporte a checkouts esparsos para reduzir ainda mais o uso de disco por agentes focados em subárvores específicas. Worktrees podem ser marcados como efêmeros para coleta de lixo automática ou persistentes para uso de longo prazo. A ferramenta também fornece saída JSON para orquestração programática.