Ich versuche, die LibreOffice-Codebasis zu klonen, aber im Moment habe ich eine Internetverbindung von ungefähr 300 KBit / s und sie ist einfach alles andere als stabil. Ich kann die Verbindung jederzeit wieder herstellen, aber dann funktioniert der Git-Klon-Prozess bereits nicht mehr und kann nicht mehr ausgeführt werden. Gibt es eine Möglichkeit, einen ausfallsichereren Git-Klon herunterzuladen?
Eine Option, die ich mir überlegt habe, ist das Herunterladen des .git-Verzeichnisses eines anderen, aber das hängt stark von anderen ab und scheint mir nicht die bestmögliche Lösung zu sein.
depth -1
ist eine Lösung?kernel/git/torvalds/linux.git
. Und ein wiederaufnehmbarer Git-Klon wird diskutiert (März 2016). Siehe stackoverflow.com/a/29192890/6309 .git init
gelingen, eine Fernbedienung einzustellen und dann abzurufen, bis der Trick erfolgreich ist? Ich glaube nicht, dass Abruf erfolgreich heruntergeladene Objekte verwirft, wenn die Verbindung fehlschlägt.Antworten:
Ich denke das ist noch nicht fertig. Es gibt eine alte GSoC-Seite , auf der die gewünschte Funktion implementiert werden soll. Meine beste Wette ist, wie Sie vorgeschlagen haben, es als Verzeichnis herunterzuladen. Ich gehe davon aus, dass Sie Downloads über andere Protokolle fortsetzen können.
Aktualisieren
Zusammen mit dem
git clone --depth=1
Vorschlag für das flache Klonen ( ) in einer der anderen Antworten kann es hilfreich sein, wenn jemand ein nacktes Repository für Sie erstellen kann, wenn Sie mit dem Anbieter kommunizieren können. Sie können das nackte Repository problemlos in ein vollständiges Repository konvertieren . Lesen Sie auch die Kommentare in dieser Antwort, da ein flacher Klon möglicherweise nicht immer hilft.quelle
--depth 1
und--unshallow
scheint den Jahren der Nutzung standgehalten zu haben.Zwei Lösungen (oder besser gesagt Problemumgehungen ), die mir in den Sinn kommen, sind:
Verwendung flache Klon dh
git clone --depth=1
, dann vertieft dieser Klon mitgit fetch --depth=N
, mit zunehmendem N . Sie könnengit fetch --unshallow
(seit 1.8.0.3) verwenden, um alle verbleibenden Revisionen herunterzuladen.Bitten Sie jemanden, bis zu einer getaggten Version zu bündeln (siehe Manpage zu git-bundle (1) ). Das Bundle selbst ist eine gewöhnliche Datei, die Sie auf beliebige Weise über HTTP / FTP mit Unterstützung für Lebensläufe, über BitTorrent, über rsync usw. herunterladen können. Sie können einen Klon aus dem Bundle erstellen, die Konfiguration korrigieren und weitere Abrufe aus dem offiziellen LibreOffice-Repository durchführen .
quelle
for m in $(seq 1 50);do git fetch --depth=$[m*100];done
hat für mich gearbeitet, danke! :)Diese Methode verwendet Server von Drittanbietern.
Zuerst tun
git clone --bare
, dann könnenrsync -v -P -e ssh user@host:repo.git .
Sie msys unter Windows verwenden.quelle
rsync(1)
GitHub, wie ich Sie sehe , verboten wird "? Oder meinst du zum erstengit clone
auf einem 3rd-Party - Server und rsync es dann auf dem lokalen Rechner?" Unterschätzen Sie niemals die Bandbreite einer Brieftaube und eines Bündels SD-Karten " wäre die moderne Form dieser Antwort. Tar es auf, schlicht alt
cp -a
, was auch immer, und verschicke das verdammte Ding. Finden Sie jemanden, der bereit ist, sich zwei Minuten Zeit zu nehmen, um einen USB-Stick in eine SASE zu legen. Suchen Sie dort einen Ansprechpartner, der dies möglicherweise sogar für Sie erledigt.quelle
Sie können "das .git-Verzeichnis einer anderen Person herunterladen", wobei diese andere Person das offizielle Repository selbst ist. Die LibreOffice-Repositorys sind über http verfügbar. Sie finden sie beispielsweise
build.git
unter http://anongit.freedesktop.org/git/libreoffice/build.git/ (eine vollständige Liste finden Sie unter http://cgit.freedesktop.org/libreoffice/) . Die http-URL befindet sich unten auf der Seite jedes Repositorys.Was Sie unter diesen http-URLs sehen, ist nichts anderes als ein
.git
Verzeichnis (eigentlich ein "nacktes" Repository, das nur das enthält, was Sie im.git
Verzeichnis finden würden ). Es ist dasselbe Verzeichnis, das der Server für dasgit://
Protokoll (git daemon
) lesen würde. Wenn Sie eine Kopie dieser Verzeichnisse (z. B.wget -m -np
) mit einem Web-Downloader erstellen , können Sie von Ihrer Kopie klonen. Dies funktioniert genauso gut, als ob Sie direkt aus dem http-Repository geklont hätten.Sie können also Folgendes tun: Holen Sie sich für jedes Repository eine Kopie davon mit Ihrem bevorzugten Web-Downloader (der alle Probleme bei der Wiederaufnahme fehlerhafter Downloads behandelt) und klonen Sie von dieser Kopie. Wenn Sie aktualisieren möchten, verwenden Sie erneut Ihren bevorzugten Web-Downloader, um Ihre Kopie zu aktualisieren, und ziehen Sie von dieser Kopie ab. Jetzt sind Ihre Klone und Updates genauso widerstandsfähig gegen schlechte Verbindungen wie Ihr bevorzugter Web-Downloader.
quelle
Lassen Sie
git clone
uns in seine Bestandteile zerlegen undgit checkout
verhindern, dass Dateien erneut heruntergeladen werden.Wenn es ausgeführt wird
git clone
, sind die ersten Dinge, die es tut, gleichbedeutend mitWenn Sie die obigen Schritte manuell ausführen und davon ausgehen, dass sie korrekt ausgeführt wurden, können Sie jetzt die folgenden Schritte so oft wie nötig ausführen:
Beachten Sie, dass bei jeder Ausführung alle Dateien ausgecheckt werden, Sie jedoch keine Dateien erneut herunterladen müssen , wodurch Sie möglicherweise eine Menge Zeit sparen.
quelle
Wenn Sie Zugriff auf einen Server eines Drittanbieters haben, können Sie dort klonen und dann kopieren.
quelle
Dieser Befehl hilft mir (Danke an Nicola Paolucci )
beispielsweise
quelle
Aufbauend auf den klon- / tiefenbasierten Antworten - ein paar Zeilen Bash erledigen dies ganz einfach ...
git clone --depth=1 [email protected]:/var/git/whatever.git <directory> cd <directory> for m in `seq 1 100`;do git fetch --depth=$m;done
quelle
seq 1 10 1000
; do git pull --depth = $ m; erledigt, um Schritte von 10 zu erhalten. PS Wenn ich Strg + CI mache, verliere ich nur das aktuelle Paket und ich kann vonDieses Problem hat mich auch gebissen. In meinem Fall gibt es eine Umgehung. Es kann in Ihrem Fall zutreffen oder nicht.
Ich benutze manchmal ein Mobiltelefon, um Git-Operationen auf einem Remote-System zu initiieren. Wenn mein Wi-Fi natürlich kaputt geht, endet die Sitzung und Git lässt den gesamten Klonvorgang fallen, ohne sich zu erholen. Da die Internetverbindung von meinem Remote-System zum Git-Master solide ist, muss der Klon nicht gestoppt werden. Ich brauche nur den gesunden Menschenverstand, um den Klon von der Terminalsitzung zu trennen. Dies kann mit screen / tmux oder nohup / daemon erfolgen. In meinem Fall handelt es sich also um eine Liveware-Fehlfunktion.
quelle
Verwenden Sie einen Git-Proxy, z. B. ngitcached oder git-proxy .
quelle
Verwenden Sie CNTRL Z, um das Klonen zu stoppen. Schließen Sie das Terminal nicht und versetzen Sie das System / den Laptop in den Ruhezustand. Fahren Sie später mit dem Befehl fg fort. Ich hatte heute das gleiche Problem, als ich versuchte, ein Repo von Github zu klonen. Dies war eine Zeitersparnis für mich.
quelle
Ich möchte meine 5 Cent hier setzen. Dies hat mir tatsächlich geholfen, dieses Problem zu lösen
Dies half mir, ~ 3 GB Repo über die 8-Mbit / s-ADSL-Verbindung zu klonen. Natürlich musste ich einige Male Abrufen und Ziehen durchführen, aber immer noch ...
quelle
Das Erhöhen der Puffergröße hilft Ihnen bei diesem Problem. Folgen Sie einfach den Schritten.
Schritte:
1. Öffnen Sie das Terminal oder Git Bash und gehen Sie mit "cd" zu dem Ort, an dem Sie das Repo klonen möchten.
2.Stellen Sie die Komprimierung auf 0
3.Stellen Sie die PostBuffer-Größe ein
4.Stellen Sie die maxRequestBuffer-Größe ein
5. Starten Sie jetzt den Klon
6.Warten Sie, bis der Klon vollständig ist.
Danke dir. Viel Spaß beim Codieren !!!
quelle
Wenn wir davon ausgehen, dass Server bandweit gut sind (und Sie einen Server haben), lautet eine andere Antwort:
Dies funktioniert jedoch nur mit sehr grundlegenden Erfahrungen in der Webentwicklung;) und Sie benötigen auch
git.exe
in Ihrem Serverquelle
Gleiches Problem hier - Ich habe eine wirklich flockige Internetverbindung mit oft nicht mehr als 10-15 kb / s :-P
Für mich hat der Wget-Weg sehr gut funktioniert. Gehen Sie zu der Repository-Site, auf der sich die grüne Schaltfläche "Klonen oder Herunterladen" befindet, klicken Sie darauf und kopieren Sie den Link der ZIP-Download-Option.
Fügen Sie dann den Link zum Befehl wget ein : wget -c -m -np https://github.com/your/repository/archive/master.zip
Klappt wunderbar...
quelle
Die beste Problemumgehung, die für mich funktioniert hat:
Ich hatte das gleiche Problem mit einer schlechten Internetverbindung. Also habe ich mir folgende Lösung ausgedacht:
Erstellt eine kleine PHP-Datei auf meinem Server, um das Paket als Zip-Datei herunterzuladen:
Laden Sie dann die Zip-Datei mit einem beliebigen Download-Manager herunter, der den Lebenslauf unterstützt
quelle
Sie können versuchen, mercurial mit der Erweiterung hg-git zu verwenden.
Wenn dies nicht funktioniert, können Sie
git fetch <commit-id>
nur Teile eines Remote-Git-Repositorys abrufen (Sie können in ein leeres Git-Repository abrufen, es muss nicht mit dem Klon erstellt werden). Sie können jedoch die Zweigstellenkonfiguration korrigieren (= lokale und Remote-Tracking-Zweige erstellen), wenn Sie diesen Ansatz verwenden.quelle