- Kein lokaler Klon erforderlich: Refs und Objekte werden direkt vom Quell-Remote zum Ziel-Remote gestreamt, ohne das Repository auf lokaler Festplatte auszuchecken
- Relay-Übertragungspfad: Pack-Daten aus dem
upload-pack der Quelle werden direkt an das receive-pack des Ziels weitergeleitet; dadurch bleibt der Speicherverbrauch unabhängig von der Repository-Größe konstant
- Falls Relay nicht möglich ist (force, prune, delete usw.), erfolgt ein materialisierter Fallback: Objekte werden in einen In-Memory-
go-git-Store gefetcht, anschließend wird die Pack-Datei kodiert und gepusht; das Speicherlimit lässt sich mit --materialized-max-objects festlegen
- Mit
git-sync sync lässt sich alles von der initialen Befüllung eines leeren Ziels bis zur fortlaufenden Synchronisierung abdecken; mit git-sync plan ist vor dem Push eine Vorschau möglich
git-sync replicate gleicht Ziel-Refs vollständig an die Quelle an, ist dabei aber ein strenger Modus, der fehlschlägt, wenn lokale Materialisierung nötig wäre
- Unterstützung für alle Ref-Verwaltungsaktionen wie Erstellen und Aktualisieren von Refs, erzwungene Updates mit
--force sowie Löschen mit --prune
- Alle Aktionen werden vor dem Push geplant, und es gibt eine typisierte JSON-Ausgabe, die sich direkt in CI-/Automatisierungspipelines integrieren lässt
- Kann auch als Go-Bibliothek eingebettet werden und bietet stabile APIs wie
Probe, Plan, Sync und Replicate
- Nur unidirektional, ohne SSH-Unterstützung (nur Smart HTTP/HTTPS), und als One-Shot-Ausführung ohne Daemon- oder Watch-Funktion
- MIT-Lizenz
1 Kommentare
Wurde wohl gebaut, weil
worktreegerade im Trend ist. Muss ich mal ausprobieren!