- Sem necessidade de clone local: faz streaming direto de refs e objetos do remoto de origem para o remoto de destino, sem fazer checkout do repositório no disco local
- Usa um caminho de transmissão por relay para enviar os dados de pacote do
upload-pack da origem diretamente para o receive-pack do destino, mantendo o uso de memória constante independentemente do tamanho do repositório
- Quando o relay não é possível (
force, prune, delete etc.), usa fallback materializado: busca os objetos para um store em memória do go-git, depois codifica o packfile e faz push; é possível limitar a memória com --materialized-max-objects
- Com apenas
git-sync sync, cobre desde o seeding inicial de um destino vazio até a sincronização contínua, e git-sync plan permite visualizar previamente antes do push
git-sync replicate faz os refs do destino corresponderem exatamente aos da origem, mas opera em modo estrito e falha se for necessário materializar localmente
- Suporta todas as ações de gerenciamento de refs, incluindo criação, atualização, atualização forçada com
--force e remoção com --prune
- Planeja todas as ações antes do push e fornece saída JSON tipada, permitindo integração direta com pipelines de CI/automação
- Também pode ser incorporado como biblioteca Go e oferece APIs estáveis como
Probe, Plan, Sync e Replicate
- Somente unidirecional, sem suporte a SSH (apenas Smart HTTP/HTTPS), e executado em modo one-shot, sem daemon nem função de monitoramento
- Licença MIT
1 comentários
Parece que fizeram isso porque
worktreeestá em alta. Vou experimentar!