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.

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.