So verschieben Sie Git-Repositorys und minimieren Ausfallzeiten
Frage
Ich werde Git-Repositorys von einem älteren SCM-Server auf einen neuen verschieben.Mein Hauptanliegen (abgesehen von der Wiedergabetreue natürlich) ist die Minimierung von Ausfallzeiten.Hier ist mein Plan:
- Klonen Sie auf dem neuen Computer jedes Repository mit
git clone --mirror
- Kopieren Sie Repo-Hooks für jedes Repository
- Zugriff auf den alten Server verbieten (wir verwenden Gitosis, also entfernen Sie den Zugriff für alle Benutzer außer dem neuen Server)
- Verschieben Sie den DNS-Eintrag so, dass er den von Git-Benutzern verwendeten DNS-Alias verwendet
- Ausführen
git pull
für jedes Repository auf dem neuen Server. - Bearbeiten Sie für jedes Repository auf dem neuen Server die Konfigurationsdatei, um das zu entfernen
remote "origin"
Abschnitt. - Aktivieren Sie den Zugriff auf den neuen Server
Fragen:
- Sieht das richtig aus?Ich beschäftige mich speziell mit Schritt Nr. 6.
- Gibt es eine Möglichkeit, die Ausfallzeiten zu reduzieren?
Danke.
Lösung
Ich würde (wenn keine Kommunikation zwischen altem und neuem Server möglich ist):
- Bündeln Sie jedes Repo verwenden
git bundle
- Kopieren Sie das Bundle auf den neuen Server
- Erstellen Sie Bare-Repos
git fetch
aus diesen Bundles in jedem der leeren Bare-Repo (kein Ursprung festzulegen)- Kopieren Sie den Mauszeiger über die Haken
- Zugriff auf alten Server verbieten
- Erstellen Sie ein letztes Git-Bundle für jedes Repo (inkrementelles Bundle, sehr schnell)
- Kopieren Sie diese kleinen Bündel
git fetch
das Inkrement aus den kleinen inkrementellen Bündeln
</ Ausfallzeit:Kein Ursprung zum Entfernen>- Zugriff wiederherstellen
Wenn eine Kommunikation (über SSL) zwischen dem neuen und dem alten Server möglich ist:
- Ich würde einen speziellen „Migrations“-Gitosis-Benutzer mit Zugriff auf alle Projekte erstellen
clone --bare
jedes Projekt auf dem neuen Server- Kopieren Sie den Mauszeiger über die Haken
- Zugriff auf alten Server verbieten
- einen Leisten machen
git fetch
auf jedem geklonten Repo - Ursprung entfernenu003C/ downtime>
- Zugriff wiederherstellen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow