- Aucun clone local nécessaire : les refs et objets sont diffusés directement du remote source vers le remote cible, sans checkout du dépôt sur le disque local
- Via un chemin de transfert Relay, les données pack de l’
upload-pack source sont envoyées directement au receive-pack cible, ce qui maintient une utilisation mémoire constante quelle que soit la taille du dépôt
- Quand le relay est impossible (
force, prune, delete, etc.), un fallback Materialized récupère les objets dans un store go-git en mémoire, puis encode le packfile et pousse ; la mémoire peut être limitée avec --materialized-max-objects
- Une seule commande,
git-sync sync, gère l’amorçage initial d’une cible vide jusqu’à la synchronisation continue ; git-sync plan permet un aperçu avant le push
git-sync replicate aligne complètement les refs cibles sur la source, mais fonctionne en mode strict : échec si une materialisation locale est nécessaire
- Prise en charge de toutes les actions de gestion des refs : création, mise à jour, mise à jour forcée avec
--force, suppression avec --prune, etc.
- Toutes les actions sont planifiées avant le push, avec une sortie JSON typée directement exploitable dans des pipelines CI/automatisation
- Peut aussi être embarqué comme bibliothèque Go, avec des API stables telles que
Probe, Plan, Sync et Replicate
- Unidirectionnel uniquement, pas de prise en charge SSH (Smart HTTP/HTTPS seulement), pas de daemon ni de fonction de surveillance, exécution en une seule fois
- Licence MIT
1 commentaires
Avec la popularité de
worktree, j’imagine que ça a été créé pour ça. Je vais l’essayer !