Wie ich mein Gitolite zu GitLab migriert habe

English Deutsch

Da ich mehr als 100 Repositories in meiner alten Gitolite-Instanz hatte und zu GitLab, einer benutzerfreundlicheren Lösung, migrieren wollte, habe ich einen

Warnung: Dies ist kein fertiges Skript, sondern lediglich eine Richtlinie, die Sie an Ihre spezifischen Bedürfnisse anpassen müssen. Ich habe keine privaten Repositories in Gitolite, daher sind alle meine Repositories explizit in den Konfigurationsdateien aufgelistet. Verwendung auf eigene Verantwortung und erstellen Sie ein Backup! Dies ändert oder löscht keine Ihrer Repositories in Gitolite. Sichern Sie trotzdem alle Ihre Repositories in Gitolite, nur für den Fall!

migrate_gitolite_to_gitlab.sh
# Git so konfigurieren, dass es nicht jedes Mal nach einem Passwort fragt, wenn Sie hochladen.
git config --global credential.helper store
# Repository-Liste vorbereiten (Textdatei prüfen und ungültige Namen entfernen)
cat ~/gitolite-admin/*.conf |grep repo | cut -d' ' -f2 > repos.txt
# Alle Repositories klonen
mkdir repos
cd repos
for i in $(cat ../repos.txt) ; do git clone [email protected]:${i} ; done
# Zu GitLab pushen. Dies erstellt automatisch ein neues Projekt als Ihr aktueller Benutzer
for i in * ; do cd $i && git remote rm origin && git remote add origin "https://gitlab.myserver.org/yourusername/${i}.git" && git push origin master && cd ..; done
# Vergessen Sie nicht, ein Backup Ihrer Gitolite-Repositories zu erstellen, falls etwas schiefgeht!

Dieses Skript nutzt die Tatsache, dass Sie direkt auf ein neues Repository auf GitLab pushen können, wobei das Projekt dabei erstellt wird. Sie müssen das Projekt nicht manuell erstellen.

Während der Ausführung dieses Skripts stürzte meine GitLab-Instanz zweimal ab, während sich ein Repository in der letzten Phase des git push-Prozesses befand (dies tendierte dazu, bei kleinen Kilobyte-großen Repositories passieren) aufgrund von starkem Swapping infolge hoher Speicherauslastung. Ein Neustart von GitLab und ein erneutes Ausführen des Push to GitLab-Teils des Skripts behob dieses Problem.

Beachten Sie, dass git config --global credential.helper store aktiv bleibt und Ihre git-Passwörter im Klartext speichert. Falls Sie das Standardverhalten wiederherstellen möchten, sie im RAM für 15 Minuten zu behalten, verwenden Sie git config --global credential.helper cache nach dem Ausführen dieser Befehle.


Check out similar posts by category: Git