gc git na máquina com cota
Pergunta
Pergunta simples, eu estou tentando executar git gc
em uma máquina com uma quota. Pré-gc, estou em cerca de 18GB de uso, quase todos que é o meu clonado git repositório. Meu limite rígido é de 25 GB. Durante a operação git gc
, arquivos temporários suficientes são gravados em disco para bater o meu limite e, assim, causar a operação git gc
a falhar.
Eu posso excluir o .git/objects/pack/tmp_pack_*
após a operação falhou e voltar até 18GB de uso, mas eu realmente gostaria de git gc
realmente completa e recuperar um pouco o desempenho.
Existe alguma opção de fantasia (ou uma série de outros comandos do git) que eu possa usar que não envolve primeira escrita> 7 GB de arquivos temporários para o disco?
Solução
Que parte do gc
é importante para você? Você poderia tentar executar as peças git-prune
e git-repack
separadamente. Com git-prune
, certifique-se e especificar uma data de corte com a opção --expire
. Se há uma tonelada de objetos soltos no seu repo, levando-os para fora do caminho primeira seria útil. *
Com git-repack
, talvez você possa mexer com as configurações de profundidade e janelas para obter algo pequeno o suficiente para ser executado dentro do espaço que você tem.
* Não tenho a pretensão de compreender plenamente todas as questões envolvidas, mas eu aviso que a poda vem após o repack no código git-gc.
Outras dicas
Parece que a melhor solução é pedir a TI de uma quota maior, embora eu ainda estou interessado em ouvir soluções alternativas. Hoje eles estavam se sentindo generoso, mas amanhã ...:)
git prune
é uma excelente sugestão, boa chamada Jefromi.
Outra coisa que você pode fazer é comprimir os seus outros arquivos; git gc
; descomprimir.
7z
recebe compressão incrível, mas não preserva hardlinks e Unix proprietário / grupo, IIRC. Se você tem uma quota, os arquivos são, provavelmente, todos de propriedade da sua conta, então não se preocupe sobre a primeira pontuação. Mas o mais seguro é tar c --lzma
se você tem isso, ou apenas tar czf
ou cjf
. Se você tem um monte de arquivos pequenos, o umm, externo (?) De fragmentação até block-size pode ser significativo.