Skip to content

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 .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

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Federico Hernandez am :

*Eigentlich sollte es genügen, die Repositories von dem einen Server auf den anderen zu kopieren (scp oder rsync).

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 :

*Da habe ich vergessen, eine Information mitzugeben.

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 :

*Ok.

Die "normale" Methode ist

CODE:
git clone --bare  your-checked-out-repo  new-bare-repo


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:

CODE:
cp  -a  foo  backup
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 :

*Irgendwie sind die code-Blöcke nicht richtig formatiert worden...

CODE:
cp  -a  foo  backup
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 :

*Ich habe die Punkte korrigiert. Hier musste die Reihenfolge von zwei Plugins geändert werden.

Danke Dir!

Kommentar schreiben

Gravatar, Favatar, Pavatar, Identica, Twitter, MyBlogLog Autoren-Bilder werden unterstützt.
BBCode-Formatierung erlaubt
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
:'(  :-)  :-|  :-O  :-(  8-)  :-D  :-P  ;-) 
Formular-Optionen