Git Repositories auf andere Server umziehen ...
Mit unserem Umzug von Hetzner zu Manitu müssen auch die ganzen Git-Repositories bewegt werden und ich verstehe jetzt, warum man sagt, dass Git nicht gut mit grossen Binärdateien umgehen kann.
Nach einer Änderung der URL in der
Ein
Auf einer zweiten Maschine habe ich die URL auch geändert und ein
Gibt es einen geschickteren Weg das anzugehen oder ist die Verfahrensweise richtig so?
Nach einer Änderung der URL in der
.git/config
des Repositories und einem herzlichen git push origin --all
verabschiedet sich die Maschine ins Swapping. Yippieh!Ein
git gc
zeigt das gleiche Resultat. Mit einem git repack --window-memory=1g
, gefolgt von einem git push origin --all
bin ich allerdings zum Ziel gekommen.Auf einer zweiten Maschine habe ich die URL auch geändert und ein
git pull
dort funktioniert bestens.Gibt es einen geschickteren Weg das anzugehen oder ist die Verfahrensweise richtig so?
$ cd /pfad/zum/repository
$ git repack --window-memory=1g
$ sed -i 's/alter Server/neuer Server/' .git/config
$ git push origin --all
$ git repack --window-memory=1g
$ sed -i 's/alter Server/neuer Server/' .git/config
$ git push origin --all
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Federico Hernandez am :
Dann auf deinem Klienten nur .git/config anpassen. Ohne folgendem push.
Funktioniert bei mir.
Hast du nicht mehr Zugriff auf das Original-Repository kann man sich ein neues mit
git clone --bare
erzeugen. Dann dieses auf den neuen Server kopieren. Und .git/config im lokalen Repository anpassen.
Dirk Deimeke am :
Aufgrund der Plattenfehler, die wir vor ein paar Wochen hatten, lässt sich das Repository nicht mehr sauber klonen (Gitosis). Ich muss also wirklich das ausgecheckte Repository irgendwie "rüberbeamen".
Kann ich ansonsten die Gitosis-Repositories "einfach so" kopieren?
Danke Federico!
Federico Hernandez am :
Die "normale" Methode ist
Das kannst du dann einfach das neue Verzeichnis kopieren. Wie git clone auf grosse binäre Dateien reagiert weiss ich allerdings nicht.
Folgendes wäre für dich wohl besser geeignet:
cp -a foo/.git bar
git --git-dir=bar config core.bare true
Dann hast du mit bar eine neues bare-Repository. Das kannst du dann mit scp/rsync auf den Server schieben.
Im original foo-Repository dann einfach den Server auf den neuen in .git/config ändern.
Federico Hernandez am :
cp -a foo/.git bar
git --git-dir=bar config core.bare true
Und bare sollte eigentlich bare sein...
Ich gehe jetzt nach Hause und lege mich hin!
Dirk Deimeke am :
Danke!
Dirk Deimeke am :
Danke Dir!