web-dev-qa-db-fra.com

Comment rendre Git Clone plus rapide avec plusieurs threads?

Ma vitesse Internet pour github n’était jamais rapide, et elle s’attarde à 50 kb/s (ma vitesse Internet est de 20 Mbits, ce qui n’est pas très rapide mais reste beaucoup plus rapide que cela). D'après mes estimations, le référentiel est multi-Go, donc cela prendra très longtemps.

Est-ce que git supporte le téléchargement des objets en utilisant plusieurs threads afin que je puisse maximiser ma vitesse d'Internet?

29
simonzack

Vous pouvez au moins essayer d'atténuer le problème, avec un clone peu profond (ce qui signifie ne pas cloner toute l'historique):

git clone --depth 1 <repository>

Assurez-vous d’avoir un git 1.9+, comme je l’ai expliqué dans " Est-ce que git clone --depth 1 (clone superficiel) est plus utile qu’il n’en donne? ".

Remarque: Git 2.5 (T2 2015) prend même en charge une seule validation d'extraction! Voir " Extraire une validation spécifique depuis un référentiel git distant ".

48
VonC

Essayez git config --global http.postBuffer 524288000.

2
WHS

git clone --jobs

Cela pourrait aider si vous avez plusieurs sous-modules:

-j <n>, --jobs <n>

Le nombre de sous-modules récupérés en même temps. Par défaut, l'option submodule.fetchJobs.

Ajouté le v2.9.0 (mars 2016) à commit 72290d6 :

clone: ​​autorise un argument explicite pour les clones de sous-modules parallèles 

Je me demande si cela vous aidera si vous avez deux modules sur un seul serveur. Référence TODO sur GitHub.

Certainement devrait si vous avez des sous-modules de différents serveurs.

Je me demande si Git est assez intelligent pour extraire autant que possible de différents serveurs à un moment donné au lieu de placer tous les travaux sur un seul serveur à la fois de manière aléatoire.

J'ai vu un comportement similaire sous Windows, où la cause était l'antivirus Windows, qui était très agressif et qui transférait beaucoup de petits fichiers. Le double démarrage sous Linux donnait toute la vitesse nécessaire aux clones git.

Si vous avez les spécifications, envisagez de créer une installation Windows de test (par exemple, en utilisant virtuellement VirtualBox ou vmware player) dans laquelle vous installez une version vierge de Windows et ajoutez uniquement le logiciel git nécessaire. Vous pouvez alors voir si le problème est "à l'intérieur" ou "à l'extérieur" de git. Mon hypothèse personnelle est que cela va être rapide.