J'essaie de cloner la base de code LibreOffice, mais pour le moment, j'ai une connexion Internet d'environ 300 kbps et c'est tout sauf stable. Je peux récupérer la connexion à tout moment, mais le processus de clonage git a déjà cessé de fonctionner, et aucun moyen de le redémarrer. Existe-t-il un moyen d'avoir un téléchargement de clone git plus résistant aux pannes?
Une option que j'ai envisagée est de télécharger le répertoire .git de quelqu'un d'autre, mais cela dépend trop des autres et ne me semble pas être la meilleure solution possible.
depth -1
- être une solution?kernel/git/torvalds/linux.git
. Et un clone git pouvant être repris est en cours de discussion (mars 2016). Voir stackoverflow.com/a/29192890/6309 .git init
, configurer une télécommande puis faire la récupération jusqu'à ce qu'elle réussisse faire l'affaire? Je ne pense pas que Fetch supprime les objets téléchargés avec succès si la connexion échoue.Réponses:
Je ne pense pas que ce soit encore prêt. Il existe une ancienne page GSoC qui prévoyait d'implémenter la fonctionnalité souhaitée. Mon meilleur pari est, comme vous l'avez suggéré, de le télécharger en tant que répertoire. Je suppose que vous êtes en mesure de reprendre les téléchargements via d'autres protocoles.
Mettre à jour
En plus de la
git clone --depth=1
suggestion de clonage superficiel ( ) dans l'une des autres réponses, il peut être utile que quelqu'un puisse créer un référentiel nu pour vous si vous pouvez communiquer avec le fournisseur. Vous pouvez facilement convertir le référentiel nu en un référentiel complet. Lisez également les commentaires dans cette réponse car un clone superficiel peut ne pas toujours aider.la source
--depth 1
et--unshallow
semble avoir résisté aux années d'utilisation.Deux solutions (ou plutôt des contournements ) qui me viennent à l'esprit sont:
Utilisez un clone peu profond
git clone --depth=1
, c'est-à - dire , puis approfondissez ce clone en utilisantgit fetch --depth=N
, avec N croissante . Vous pouvez utilisergit fetch --unshallow
(depuis la 1.8.0.3) pour télécharger toutes les révisions restantes.Demandez à quelqu'un de regrouper une version balisée (voir la page de manuel git-bundle (1) ). Le bundle lui-même est un fichier ordinaire, que vous pouvez télécharger de n'importe quelle manière, via HTTP / FTP avec prise en charge de la reprise, via BitTorrent, via rsync, etc. .
la source
for m in $(seq 1 50);do git fetch --depth=$[m*100];done
travaillé pour moi, merci! :)Cette méthode utilise un serveur tiers.
Tout d'abord, faites-le
git clone --bare
, puisrsync -v -P -e ssh user@host:repo.git .
Vous pouvez utiliser msys sous Windows.la source
rsync(1)
la façon dont GitHub je vous regarde "? Ou, voulez-vous d'abordgit clone
sur un serveur tiers, puis le resynchroniser sur la machine locale?" Ne sous-estimez jamais la bande passante d'un pigeon voyageur et d'un paquet de cartes SD " serait la forme moderne de cette réponse. Tarez-le, tout simplement vieux
cp -a
, peu importe, et postez ce fichu truc. Trouvez quelqu'un prêt à prendre deux minutes de son temps pour déposer une clé USB dans un SASE. Trouvez un contact, là-bas, ils pourraient même le faire pour vous.la source
Vous pouvez "télécharger le répertoire .git de quelqu'un d'autre", mais avec ce quelqu'un d'autre étant le dépôt officiel lui-même. Les référentiels LibreOffice sont disponibles via http, par exemple
build.git
sur http://anongit.freedesktop.org/git/libreoffice/build.git/ (voir http://cgit.freedesktop.org/libreoffice/ pour la liste complète, l'URL http se trouve au bas de la page de chaque référentiel).Ce que vous voyez sur ces URL http n'est rien de plus qu'un
.git
répertoire (en fait un référentiel "nu", qui n'a que ce que vous trouverez dans le.git
répertoire). C'est le même répertoire que le serveur dugit://
protocole (git daemon
) lirait. Si vous faites une copie de ces répertoires avec un téléchargeur Web (par exemplewget -m -np
), vous pouvez cloner à partir de votre copie et cela fonctionnera aussi bien que si vous aviez cloné directement à partir du référentiel http.Donc, ce que vous pouvez faire est: pour chaque référentiel, obtenez-en une copie avec votre téléchargeur Web préféré (qui traitera tous les problèmes liés à la reprise des téléchargements interrompus), et clonez à partir de cette copie. Lorsque vous souhaitez mettre à jour, utilisez à nouveau votre téléchargeur Web préféré pour mettre à jour votre copie et extrayez-la. Désormais, vos clones et mises à jour résistent aussi bien aux mauvaises connexions que votre téléchargeur Web préféré.
la source
Décomposons ses
git clone
composants et utilisonsgit checkout
pour empêcher le re-téléchargement de fichiers.Lorsqu'elle
git clone
s'exécute, les premières opérations effectuées sont équivalentes àSi vous exécutez les étapes ci-dessus manuellement et en supposant qu'elles se sont déroulées correctement, vous pouvez maintenant exécuter les opérations suivantes autant de fois que nécessaire:
Notez qu'il récupérera tous les fichiers à chaque exécution, mais vous n'aurez pas à retélécharger les fichiers , ce qui peut vous faire gagner beaucoup de temps.
la source
Si vous avez accès à un serveur tiers, vous pouvez le cloner puis copier.
la source
Cette commande m'aide (merci à Nicola Paolucci )
par exemple
la source
S'appuyant sur les réponses basées sur le clone / profondeur - quelques lignes de bash permettent de le faire facilement ...
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
la source
seq 1 10 1000
; do git pull --depth = $ m; done pour obtenir des étapes de 10. PS Si je fais Ctrl + CI, je perds uniquement le paquet actuel, et je peux recommencerCe problème m'a mordu aussi. Dans mon cas, il y a une solution. Cela peut s'appliquer ou non dans votre cas.
J'utilise parfois un téléphone portable pour lancer des opérations git sur un système distant. Si mon wi-fi s'arrête bien sûr, la session se termine et git supprime toute l'opération de clonage sans récupérer. Mais comme la connexion Internet de mon système distant au maître git est solide, il n'est pas nécessaire que le clone s'arrête. Tout ce dont j'ai besoin est le bon sens pour détacher le clone de la session terminale. Cela peut être fait en utilisant screen / tmux ou nohup / daemon. C'est donc un dysfonctionnement du liveware dans mon cas.
la source
Utilisez un proxy git, tel que ngitcached ou git-proxy .
la source
Utilisez CNTRL Z pour arrêter le clonage. Ne fermez pas le terminal, mettez le système / ordinateur portable en veille prolongée, puis continuez plus tard par la commande fg. J'étais confronté au même problème aujourd'hui en essayant de cloner un repo frm github. Cela m'a permis de gagner du temps.
la source
L'augmentation de la taille de la mémoire tampon vous aidera dans ce problème. Suivez simplement les étapes.
pas:
1.Ouvrez le terminal ou Git Bash et avec "cd" allez à l'emplacement où vous vouliez cloner le dépôt.
2.Réglez la compression à 0
3. définir la taille du postBuffer
4.Set maxRequestBuffer size
5.Maintenant, commencez le clonage
6.Attendez que le clone soit terminé.
Je vous remercie. Bon codage !!!
la source
Je voudrais mettre mes 5 cents ici. C'est en fait ce qui m'a aidé à résoudre ce problème
Cela m'a aidé à cloner ~ 3 Go de repo sur la connexion adsl 8 Mbps, bien sûr, j'ai dû effectuer des récupérations et des extractions plusieurs fois, mais quand même ...
la source
si nous supposons que les serveurs ont une bonne bande passante (et que vous avez un serveur), une autre réponse est de:
mais cela ne fonctionne qu'avec une expérience de développement Web très basique;) et vous avez également besoin
git.exe
dans votre serveurla source
Même problème ici - j'ai une connexion Internet très irrégulière avec souvent pas plus de 10-15 kb / s :-P
Pour moi, la méthode wget a très bien fonctionné. Allez sur le site du référentiel où se trouve le bouton vert "cloner ou télécharger", cliquez dessus et copiez le lien de l'option de téléchargement ZIP.
Insérez ensuite le lien vers la commande
wget : wget -c -m -np https://github.com/your/repository/archive/master.zip
Fonctionne comme un charme ...
la source
la meilleure solution de contournement qui a fonctionné pour moi:
J'ai rencontré le même problème avec une mauvaise connexion Internet. J'ai donc proposé la solution suivante:
J'ai créé un petit fichier php sur mon serveur pour télécharger le package sous forme de fichier zip:
puis téléchargez le fichier zip à l'aide de n'importe quel gestionnaire de téléchargement prenant en charge la reprise
la source
Vous pouvez essayer d'utiliser mercurial avec l'extension hg-git.
Si cela ne fonctionne pas, vous pouvez utiliser
git fetch <commit-id>
pour récupérer uniquement des parties d'un référentiel git distant (vous pouvez récupérer un référentiel git vide, il n'est pas nécessaire de le créer avec clone). Mais vous pouvez corriger la configuration de la branche (= créer des branches de suivi locales et distantes) lorsque vous utilisez cette approche.la source