Dlaczego git jest taki wolny przy dużych plikach?


8

Próbowałem użyć git do zarządzania moimi zdjęciami (tworzenie kopii zapasowych / robienie zdjęć). Cała biblioteka ma kilka GB. Większość plików to pliki JPG 2-3M. Kiedy dodawałem pliki do repozytorium, wydawało się, że zajmuje to kilka dni. Wykorzystanie procesora było zawsze prawie 100%.

Czy istnieje powód, dla którego git powinien działać wolno na dużych plikach?

ps Wiem, że git nie został zaprojektowany do tego.

Odpowiedzi:


7

Git domyślnie kompresuje pliki. Pliki JPEG domyślnie są już skompresowane. Nie chodzi o to, że to duże pliki, tylko o to, że są skompresowane.

Zauważysz ten sam efekt, dodając pliki ZIP do repozytorium git.

EDYCJA: Istnieje interesujący wątek na /programming/7102053/git-pull-without-remotely-compressing-objects na temat kompresji.


1
Jak mogę powiedzieć gitowi, aby nie kompresował plików? Niekoniecznie potrzebuję miejsca. Chcę, żeby było tak szybko, jak to możliwe. Dzięki!
tarcica

2
Istnieje wiele przełączników, w które możesz grać, w git configtym core.compressioni pack.window. Ponieważ nigdy nie próbowałem uruchomić git bez kompresji, YMMV. Opublikuj swoje odkrycia, aby pomóc nam wszystkim wyciągnąć wnioski z Twojego doświadczenia.

@Eroen, masz rację. Głosowałem za twoim komentarzem.

2
Git tworzy również (i sprawdza) skrót sha1 każdego pliku za każdym razem, gdy go używa, co również może zająć trochę czasu dla dużych plików.
Eroen

3
@RandolphWest: Dobrze, ale źle. Kompresję zlib można wyłączyć za pomocą $ git set core.compression 0. sha1 to dziesiątki MiB na sekundę, ale mogą źle wpływać na warunki niskiej pamięci.
Eroen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.