- Sin necesidad de clonar localmente: transmite directamente refs y objetos desde el remoto de origen al remoto de destino, sin hacer checkout del repositorio en disco local
- Usa una ruta de transferencia Relay para pasar directamente los datos del pack de
upload-pack del origen al receive-pack del destino, manteniendo constante el uso de memoria sin importar el tamaño del repositorio
- Cuando el relay no es posible (force, prune, delete, etc.), usa un fallback Materialized: hace fetch de los objetos a un store en memoria de
go-git, luego codifica el packfile y hace push; se puede limitar la memoria con --materialized-max-objects
- Con solo
git-sync sync maneja desde el seeding inicial de un destino vacío hasta la sincronización continua; también permite previsualizar antes del push con git-sync plan
git-sync replicate hace que los refs del destino coincidan completamente con los del origen, pero en modo estricto falla si requiere materialización local
- Soporta todas las acciones de gestión de refs: creación, actualización, actualización forzada con
--force, eliminación con --prune, etc.
- Planifica todas las acciones antes del push y ofrece salida JSON tipada, lista para integrarse directamente en pipelines de CI/automatización
- También se puede integrar como librería en Go y ofrece APIs estables como
Probe, Plan, Sync y Replicate
- Solo unidireccional, sin soporte para SSH (solo Smart HTTP/HTTPS), y con ejecución one-shot, sin funciones de daemon o monitoreo
- Licencia MIT
1 comentarios
Parece que lo hicieron porque
worktreese puso de moda. ¡Voy a probarlo!