Quel est le moyen le plus rapide pour cloner un dépôt git sur une connexion réseau rapide?
J'ai une situation relativement important dépôt git situé sur un vieux, lent hôte sur mon réseau local où il prend un certain temps pour faire le clone initial.
ravn@bamboo:~/git$ git clone gitosis@gitbox:git00
Initialized empty Git repository in /home/ravn/git/git00/.git/
remote: Counting objects: 89973, done.
remote: Compressing objects: 100% (26745/26745), done.
remote: Total 89973 (delta 50970), reused 85013 (delta 47798)
Receiving objects: 100% (89973/89973), 349.86 MiB | 2.25 MiB/s, done.
Resolving deltas: 100% (50970/50970), done.
Checking out files: 100% (11722/11722), done.
ravn@bamboo:~/git$
Il n'y a pas de git spécifiques des modifications de configuration de gitosis.
Est-il un moyen d'accélérer la réception des bits jusqu'à ce que le réseau est capable de?
EDIT: j'ai besoin de la de nouveaux référentiels pour être correctement connecté à l'amont du référentiel. Ma compréhension de ce besoin de git pour faire le clonage, et ainsi de bits brutes de la copie de l'extérieur de git ne fonctionnera pas.
and thus raw bit copying outside of git will not work
- vous s'il vous plaît fournir le code source de cette demande? Il semble mal à m'- s'il vous plaît laissez-moi savoir comment faire raw d'un peu de copie et de l'avoir correctement liée à l'amont du référentiel de la même manière que le "git clone" commande.
- Je vais vous trouver dans chat.stackoverflow.com/rooms/5151/... (chat) - je ne suis pas disponible à temps plein si
- Ping, avez-vous trouvé c'chat? Ou avez-vous fait perdre de l'intérêt?
- veuillez vous détendre. En amont système git n'est pas disponible pour moi les week-ends.
- Je n'ai pas l'obtenir. Quelqu'un a même upvoted ce commentaire. Pour moi, c'est juste impoli de poser une question et recevoir une réponse, et pas même de répondre dans les 3 jours (sauf le renvoyer, lorsque vous y êtes invité). J'ai été franchement peur que le chat ne pourrait pas avoir travaillé. Je suppose que je ne suis pas inquiet plus.
- Git 2.22 (T2 2019) fera
git clone --depth=1 ...
encore plus vite (62% plus rapide). Voir ma réponse ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Muet copie
Comme mentionné, vous pouvez simplement copier un référentiel avec des "dumb" transfert de fichier.
Ce ne sera certainement pas perdre du temps à la compression, à l'emballage, deltifying et/ou de filtrage.
Plus, vous aurez
Cela peut ou peut pas être ce dont vous avez besoin, mais il est bon d'être conscient du fait
Bundle
Git clone par défaut optimise la bande passante. Depuis git clone, par défaut, ne pas miroir toutes les branches (voir
--mirror
), il ne serait pas logique de viens de vider le pack de fichiers que est (parce que vous envoyer éventuellement plus que nécessaire).Lors de la distribution à un vraiment grand nombre de clients, envisager d'utiliser bundles.
Si vous voulez un rapide clone sans du côté serveur, le coût, la git façon est
bundle create
. Vous pouvez maintenant distribuer le bundle, sans le serveur, même en étant impliqué. Si vous voulez dire quebundle... --all
comprend plus que de simplesgit clone
, considérons par exemplebundle ... master
pour réduire le volume.et de distribuer l'instantané bundle à la place. C'est le meilleur des deux mondes, alors que bien sûr vous n'aurez pas à obtenir les éléments de la liste à puces ci-dessus. Sur l'extrémité de réception, juste
Compression configs
Vous pouvez regarder l'abaissement de la charge du serveur par la réduction/suppression de compression.
Jetez un oeil à ces paramètres de configuration (je suppose
pack.compression
peut vous aider à réduire la charge du serveur)Largement la bande passante du réseau, ce sera en fait, résultat plus rapide des clones. N'oubliez pas
git-repack -F
lorsque vous décidez de référence qui!git clone snapshot.bundle
permet de cloner dans une nouvellesnapshot
repo 🙂git clone
, mais c'est pas ma faute qu'ils n'existent pas). J'ai mise à jour ma réponse avec plus d'informations de fondUtiliser la profondeur pour créer un clone simple.
Après avoir réalisé que la limite supérieure de la vitesse de transfert de données, est la connexion ssh qui est établi "à l'extérieur" de git, j'ai fait quelques expériences, et a constaté que la limite supérieure de l'utilisation de ppcp (Mastic scp) a été 3,0 MB/s comme le chiffrement blowfish régime a été bien choisi. Une expérience de contrôle de la matière première ftp a montré que la vitesse de transfert a été de 3,1 MO/s, donc il a indiqué que c'était la limite supérieure du réseau.
Cela s'exécute à l'intérieur d'un hyperviseur de vmware, et que le processus de faire des e/S réseau utilisé près de 100% de cpu, il a indiqué que le goulot d'étranglement est le Ubuntu pilote de carte réseau. J'ai alors constaté que même si les outils vmware ont été installés, pour une raison quelconque, le noyau utilise vlance conducteur (l'émulation d'un réseau 10 Mbits /s de la carte avec les IRQ et tout et tout) au lieu de la vmxnet pilote (qui parle directement à l'hyperviseur). C'est aujourd'hui en attente d'une fenêtre de service pour être changé.
En d'autres termes, le problème n'était pas avec git, mais le sous-jacent "matériel".
À partir du journal, il semble que vous avez déjà terminé le clone, si votre problème est que vous avez besoin de faire cette opération à plusieurs reprises sur des machines différentes, vous pouvez simplement copier le répertoire de dépôt d'une machine à l'autre. Cette façon de préserver la relation (télécommandes) entre chaque copie et le dépôt, vous cloné à partir d'.
Je suis le bench-marking git clone.
Il peut être plus rapide avec --les travaux d'options si ce projet comprennent des submodules
ex:
La
git clone --depth=1 ...
proposé en 2014 deviendra plus rapide en Q2 2019 avec Git 2.22.C'est parce que, lors d'une première "
git clone --depth=...
" partielle clone, il estinutile de consacrer des cycles pour une grande partie de la connectivité
vérifiez que énumère et saute promettant des objets (qui, par définition, est de tous les objets récupérés à partir de l'autre côté).
Cela a été optimisé à.
Résultat:
62% plus rapide!