Pourquoi git est-il si lent avec des fichiers volumineux?


8

J'essayais d'utiliser git pour gérer mes photos (sauvegarder / prendre des instantanés). La bibliothèque entière fait plusieurs Go. La plupart des fichiers sont des JPG de 2-3M. Lorsque j'ajoutais les fichiers dans le référentiel, cela semblait prendre plusieurs jours. L'utilisation du processeur était toujours proche de 100%.

Y a-t-il une raison pour laquelle git devrait être lent sur les gros fichiers?

ps je sais que git n'a pas été conçu pour ça.

Réponses:


7

Git compresse par défaut les fichiers. Les fichiers JPEG par défaut sont déjà compressés. Ce n'est pas que ce sont des fichiers volumineux, c'est que ce sont des fichiers compressés.

Vous remarquerez le même effet en ajoutant des fichiers ZIP à un référentiel git.

EDIT: Il y a un fil intéressant sur /programming/7102053/git-pull-without-remotely-compressing-objects sur la compression.


1
Comment puis-je dire à git de ne pas compresser les fichiers? Je n'ai pas forcément besoin d'espace. Je veux que ce soit aussi rapide que possible. Merci!
bois

2
Il existe une multitude de commutateurs avec git configlesquels vous pouvez jouer , notamment core.compressionet pack.window. Étant donné que je n'ai jamais essayé d'exécuter git sans compression, YMMV. Veuillez poster ce que vous avez découvert, pour que nous puissions tous apprendre de votre expérience.

@Eroen, vous faites valoir un bon argument. J'ai voté pour votre commentaire.

2
Git crée (et vérifie) un hachage sha1 de chaque fichier à chaque fois qu'il l'utilise, ce qui peut prendre un certain temps pour les fichiers volumineux.
Eroen

3
@RandolphWest: Bon, mais faux. La compression zlib peut être désactivée par $ git set core.compression 0. sha1 représente des dizaines de Mio par seconde, mais ils peuvent perturber gravement les conditions de mémoire insuffisante.
Eroen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.