227 votes

Comment réaliser un clone git pour un gros projet sur une connexion instable ?

J'essaie de cloner git la base de code de LibreOffice, mais pour l'instant, je n'ai pas de connexion internet. par téléphone portable d'environ 300kbps et c'est tout sauf stable. Je peux rétablir la connexion à tout moment, mais alors le processus de clonage git a déjà cessé de fonctionner, et il n'y a aucun moyen de le remettre en marche. Existe-t-il un moyen d'avoir un téléchargement de clone git plus résistant aux pannes ?

Une option que j'ai moi-même 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.

153voto

Jakub Narębski Points 87537

Deux solutions (ou plutôt solutions de contournement ) qui me viennent à l'esprit sont :

  • Utilisez clone peu profond c'est-à-dire git clone --depth=1 entonces approfondir ce clone en utilisant git fetch --depth=N avec une augmentation N . Vous pouvez utiliser git fetch --unshallow (depuis 1.8.0.3) pour télécharger toutes les révisions restantes.

  • Demandez à quelqu'un de préparer paquet jusqu'à une certaine version étiquetée (voir git-bundle(1) page de manuel). Le paquet 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 des reprises, via BitTorrent, via rsync, etc. Vous pouvez créer un clone à partir du paquet, corriger la configuration, et faire d'autres récupérations à partir du dépôt officiel de LibreOffice.

78voto

Jungle Hunter Points 3485

Je ne pense pas que ce soit encore prêt. Il y a une ancienne page du GSoC qui a prévu de mettre en œuvre la fonctionnalité que vous souhaitez. Ma meilleure option est, comme vous l'avez suggéré, de le télécharger sous forme de répertoire. Je suppose que vous êtes en mesure de reprendre les téléchargements sur d'autres protocoles.

Clone redémarrable

Lors du clonage d'un grand référentiel (tel que comme KDE, Open Office, le noyau Linux) il n'y a actuellement aucun moyen de redémarrer un clone interrompu. Cela peut prendre temps considérable pour un utilisateur au un utilisateur au bout d'un petit tuyau pour télécharger les données, et si le clone est interrompu en plein milieu au milieu, l'utilisateur doit alors recommencer depuis le début et recommencer. Pour certains utilisateurs, cela peut rendre impossible le clonage d'un grand dépôt.

Objectif : Permettre à git-clone de reprendre automatiquement reprendre un téléchargement précédemment échoué via le protocole natif git://. Langage : C Mentor : Shawn Pearce Suggéré par : Shawn Pearce sur gmane


Mise à jour

Avec le clonage superficiel ( git clone --depth=1 ) suggestion dans l'une des autres réponses, il pourrait être utile que quelqu'un fasse un référentiel nu pour vous si vous pouvez communiquer avec le fournisseur. Vous pouvez facilement convertir le référentiel nu vers un référentiel complet. Lisez également les commentaires de cette réponse car un clone superficiel n'est pas toujours utile.

16voto

Rafal Rusin Points 373

Cette méthode utilise un serveur tiers.

D'abord, faites git clone --bare alors rsync -v -P -e ssh user@host:repo.git . Vous pouvez utiliser msys sous Windows.

11voto

CesarB Points 18048

Vous pouvez "télécharger le répertoire .git de quelqu'un d'autre", mais ce quelqu'un d'autre est le dépôt officiel lui-même. Les dépôts de LibreOffice sont disponibles via http, par exemple le dépôt de build.git est à 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 dépôt).

Ce que vous voyez sur ces URL http n'est rien d'autre qu'un .git (en fait un référentiel "nu", qui contient uniquement ce que vous trouverez dans le répertoire .git ). Il s'agit du même répertoire que le serveur pour le git:// protocole ( git daemon ) se lirait comme suit. Si vous faites une copie de ces répertoires avec un téléchargeur web (par exemple wget -m -np ), vous pouvez cloner depuis votre copie et cela fonctionnera aussi bien que si vous aviez cloné directement depuis le dépôt http.

Donc, ce que vous pouvez faire est : pour chaque dépôt, obtenez une copie de celui-ci avec votre téléchargeur web préféré (qui traitera tous les problèmes de reprise des téléchargements interrompus), et clonez à partir de cette copie. Quand vous voulez mettre à jour, utilisez à nouveau votre téléchargeur web préféré pour mettre à jour votre copie, et tirez de cette copie. Désormais, vos clones et mises à jour sont aussi résistants aux mauvaises connexions que l'est votre téléchargeur web préféré.

5voto

Amber Points 159296

Si vous avez accès à un serveur tiers, vous pouvez le cloner et le copier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X