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:

  1. Klonen Sie auf dem neuen Computer jedes Repository mit git clone --mirror
  2. Kopieren Sie Repo-Hooks für jedes Repository
  3. Zugriff auf den alten Server verbieten (wir verwenden Gitosis, also entfernen Sie den Zugriff für alle Benutzer außer dem neuen Server)
  4. Verschieben Sie den DNS-Eintrag so, dass er den von Git-Benutzern verwendeten DNS-Alias ​​verwendet
  5. Ausführen git pull für jedes Repository auf dem neuen Server.
  6. Bearbeiten Sie für jedes Repository auf dem neuen Server die Konfigurationsdatei, um das zu entfernen remote "origin" Abschnitt.
  7. Aktivieren Sie den Zugriff auf den neuen Server

Fragen:

  1. Sieht das richtig aus?Ich beschäftige mich speziell mit Schritt Nr. 6.
  2. Gibt es eine Möglichkeit, die Ausfallzeiten zu reduzieren?

Danke.

War es hilfreich?

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
scroll top