Git-Sync
- Höchste Leistung
- Basierend auf modernen Versionen von bash und awk (muss unter Mac OS aktualisiert werden)
- Schwierig für Änderungen.
- Löschen und Erstellen von Verzweigungen in einem anderen Repository.
- Robuster für die Wiederherstellung der Synchronisation von jeder Position und von Grund auf.
- Vorbereitet für eine zusätzliche Benachrichtigungsautomatisierung.
- Für die Synchronisation wird ein einzelnes nicht-nacktes Git-Repository verwendet.
Pure Git mit Convention über Git
- Viel mehr anpassbar
- Ist langsamer
- Wenn Sie während der Synchronisierung eine andere Seite festlegen, kann diese Zurückweisung abgelehnt werden (ein zweiter Versuch erforderlich).
- Minimale Tech-Abhängigkeiten
- Sie können keine Verzweigungen auf einer anderen Seite löschen.
- Bare Git-Repositorys werden für die Synchronisation verwendet.
Allgemeine Notizen
- Hängen Sie nicht von der Git-Server-Implementierung ab.
- Schutz vor gelegentlichem Löschen haben.
- Lange in einer Produktion getestet.
- Die Git-Tags-Synchronisierung wurde entfernt, da GitLab das Löschen von Tags gerne blockiert.
- Failover und automatische Wiederherstellung der Synchronisation werden unterstützt. Speziell für Netzwerkprobleme.
- Für Hunderte von Suttle-Fällen ausgelegt, die ich hier nicht beschreiben möchte.
Wie benutzt man
- Wählen Sie für jedes Repository ein Präfix aus. Nur Zweige mit solchen Präfixen werden synchronisiert. Siehe Namenskonvention unten.
- Beschreiben Sie beide Repositorys in einer einfachen Konfigurationsdatei
- Führen Sie das Synchronisationsskript regelmäßig aus
- Die Lösung wird pro Repository (vs pro Server) angewendet. Es können beliebig viele Synchronisationspaare erstellt werden.
Namenskonvention
Es ist ein beliebiger vorangestellter Name. Jede Seite besitzt ein Präfix, und nicht-schnelle Vorwärtskonflikte für vorangestellte Git-Refs werden zu Gunsten eines Besitzers gelöst.
Beispiele
company1/
entwickeln, company2-
entwickeln
company1/
JIRA-123, company2-
JIRA-321
Andere Ideen
Ansätze zum Synchronisieren entfernter Git-Repositorys
Die Situation
Angenommen, wir haben Teams in separaten Unternehmen. Jedes Team besitzt ein eigenes Repository, das auf einem eigenen separaten Git-Server gehostet wird. Dies ist häufig bei Anbieter-Client-Szenarien der Fall.