Quando executo 'git gui', recebo um pop-up que diz
Atualmente, este repositório possui aproximadamente 1500 objetos soltos.
Em seguida, sugere compactar o banco de dados. Já fiz isso antes e reduz os objetos soltos para cerca de 250, mas isso não suprime o pop-up. A compactação novamente não altera o número de objetos soltos.
Nosso fluxo de trabalho atual exige o uso significativo de 'rebase' à medida que estamos migrando do Perforce, e o Perforce ainda é o SCM canônico. Uma vez que o Git é o SCM canônico, faremos fusões regulares, e o problema de objetos soltos deve ser bastante atenuado.
Enquanto isso, eu realmente gostaria que esse pop-up 'útil' desaparecesse.
Respostas:
Como ninguém ainda tinha uma resposta, examinei o código para ver como remover o código que aparece nessa caixa de diálogo. Encontrei o
hint_gc
procedimento que faz e o local onde é chamado. Ao mesmo tempo, notei que no final de 2011 foi adicionada uma opção de configuração para desativar a caixa de diálogo . Essa alteração (parte do git-gui 0.16.0) foi mesclada à linha principal do Git em 14/12/2011 .Portanto, se você usar o Git v1.7.9 ou mais recente, poderá desativar a caixa de diálogo de aviso com o seguinte comando:
Se você estiver usando uma versão mais antiga, poderá editar
/lib/git-core/git-gui
e remover aafter 1000 hint_gc
linha ou editar/usr/share/git-gui/lib/database.tcl
e remover o corpo dohint_gc
procedimento. (Esses caminhos de arquivo estão no Cygwin - em outros ambientes, os arquivos podem estar em locais diferentes. No Windows, existec:\Program Files\Git\mingw64\libexec\git-core\git-gui.tcl
)fonte
after 1000 hint_gc
para que o aviso aconteça após10000
objetos soltos?after 1000
refere-se ao número de milissegundos a esperar até que a caixa de diálogo seja exibida. Ao aumentá-lo para "10000", a caixa de diálogo ainda aparecerá, mas levará 10 segundos para fazê-lo.database.tcl
contém a definição do limite e pode ser aumentado para tornar o diálogo menos frequente.Atualização:
git prune
"resolveria" o problema, pois removeria esses objetos soltos(
git gc
chamadasgit prune
, mas apenas para objetos soltos com mais de duas semanas, por padrão).No entanto, como o OP Michael Donohue menciona nos comentários:
Resposta original:
O problema de "
git gc
" não remover todos os objetos soltos já foi relatado antes (no final de 2008, " "git gc
"parece não remover mais objetos soltos "Então, no seu caso, um "
git prune
" seria útil?(possivelmente usando "now" na
gc.pruneexpire
variável de configuração, necessária para que o comportamento acima ocorra).Você também tem (do mesmo segmento):
fonte
Quando o pop-up "Loose Object" sei que é hora de executar o coletor de lixo do git:
Depois disso, o pop-up desaparece.
Atualização: (devido à sugestão do TED)
, extraí a rotina abaixo de
git/share/git-gui/lib/database.tcl
Você pode modificá-la para atender às suas necessidades.
fonte
git gc
partir da linha de comando resolveu o problema ... basta clicarok
em git gui de alguma forma não funcionou ...Hmmmm .... não vejo um argumento de linha de comando para isso nos documentos .
Suponho que você sempre pode obter a fonte, retirar o código da caixa de diálogo e reconstruir.
fonte