Por que o git é tão lento com arquivos grandes?

8

Eu estava tentando usar o git para gerenciar minhas fotos (fazer backup / tirar instantâneos). A biblioteca inteira tem vários GB. A maioria dos arquivos são JPGs de 2 a 3 milhões. Quando eu estava adicionando os arquivos no repositório, parecia demorar vários dias. A utilização da CPU estava sempre perto de 100%.

Existe uma razão para o git ser lento em arquivos grandes?

ps Eu sei que o git não foi projetado para isso.

madeira
fonte

Respostas:

7

O Git, por padrão, compacta arquivos. JPEGs por padrão já estão compactados. Não é que sejam arquivos grandes, é que são arquivos compactados.

Você notará o mesmo efeito ao adicionar arquivos ZIP a um repositório git.

EDIT: Existe uma discussão interessante em /programming/7102053/git-pull-without-remotely-compressing-objects sobre compactação.

Comunidade
fonte
11
Como posso dizer ao git para não compactar arquivos? Eu não preciso necessariamente de eficiência de espaço. Eu quero que seja o mais rápido possível. Obrigado!
woodings 31/03
2
Há uma série de opções com as quais você pode jogar git config, incluindo core.compressione pack.window. Vendo que eu nunca tentei rodar o git sem compressão, YMMV. Poste o que descobriu, para ajudar a todos nós a aprender com sua experiência.
@Eroen, você faz um bom argumento. Votei seu comentário.
2
O Git também cria (e verifica) um hash sha1 de cada arquivo toda vez que o usa, o que pode levar algum tempo também para arquivos grandes.
Eroen
3
@RandolphWest: Bom, mas errado. A compactação zlib pode ser desativada por $ git set core.compression 0. sha1 é dezenas de MiB por segundo, mas eles podem interferir muito nas condições de pouca memória.
Eroen