Eu amo o git e uso-o no OS X constantemente em casa. No trabalho, usamos svn no Windows, mas queremos migrar para git assim que as ferramentas estiverem totalmente amadurecidas (não apenas TortoiseGit , mas também algo parecido com a integração realmente agradável do Visual Studio fornecida pelo VisualSVN ). Mas estou divagando ...
Recentemente, instalei o msysgit em minha máquina com Windows 7 e, ao usar a versão incluída do bash, ele é terrivelmente lento. E não apenas as operações git; clear
leva cerca de cinco segundos . AAAAH!
Alguém experimentou um problema semelhante?
Edit : Parece que o msysgit não está funcionando bem com o UAC e pode ser apenas um pequeno descuido de design resultante do desenvolvimento no XP ou da execução do Vista ou 7 com o UAC desabilitado; iniciar o Git Bash usando Run as administrator
resultados na velocidade da luz que vejo no OS X (ou no 7 após iniciar o Git Bash sem uma conexão de rede - veja a resposta de @Gauthier).
Editar 2 : AH HA! Veja minha resposta.
Respostas:
Você pode acelerar significativamente o Git no Windows executando três comandos para definir algumas opções de configuração:
Notas:
core.preloadindex
faz operações do sistema de arquivos em paralelo para ocultar a latência (atualização: habilitado por padrão no git 2.1)core.fscache
corrige problemas de UAC para que você não precise executar o Git como administrador (atualização: habilitado por padrão no Git para Windows 2.8)gc.auto
minimiza o número de arquivos em .git /fonte
git config --global core.fscache true
não fez nada por mim; no entanto,git config core.fscache true
fez o truque. De acordo com isso , é porque core.fscache é uma configuração por repo.fscache
apenas como uma configuração por repo. As configurações globais se aplicam a todos os repos em uma máquina, a menos que sejam substituídas por configurações por repo.A solução para a lentidão no Vista ou 7 parece estar executando o Git Bash usando
Run as administrator
(ou desabilitando o UAC para o atalho do Git Bash ... ou desabilitando totalmente o UAC ). A diferença é noite e dia e usar o git no 7 é incrível novamente.Isso parece estar relacionado a um problema conhecido e, como especulei, o XP como um ambiente de desenvolvimento para msysgit é parcialmente responsável.
fonte
ls
em um diretório praticamente vazio)Para mim, o problema era usar __git_ps1 no prompt do shell - acho que devido ao acesso lento ao disco no msysgit.
A solução foi remover $ (__ git_ps1) das linhas PS1 = ... em / etc / profile
teste rápido se esta solução se aplica: em um shell git, digite export PS1 = '$' e verifique a velocidade de suas operações.
fonte
__git_ps1
ativo, se desativar as configurações SHOWDIRTYSTATE e / ou SHOWUNTRACKEDFILES, consulte stackoverflow.com/a/4203968/321973Tentei quase todas as dicas aqui (incluindo a da minha outra resposta) em uma nova máquina, mas não funcionaram, o Git ainda estava lento como o diabo.
Depois, dei uma olhada no software virusscanning (que estava pré-instalado): desativei a varredura em tempo real do McAfee Security Center e pronto: o git está muito rápido agora! O tempo necessário para "git svn rebase" caiu de 30s para 5s (!).
Espero que isso seja útil para outras pessoas que ainda estão tendo problemas com a lentidão do Git no Windows, perdi horas tentando descobrir isso.
fonte
Infelizmente, 'Executar como Administrador' não funcionou para mim - mas, como Kevin L descobriu, desconectar o adaptador de rede, iniciar git bash e reconectar funcionou bem. Então, eu envolvi isso em um script em lote e coloquei um atalho para ele no meu menu Iniciar, sinalizado para ser executado como administrador:
Funciona muito bem, desde que eu me lembre de que minha rede é interrompida momentaneamente.
(Win 7 Professional SP1, Git versão 1.7.8-preview20111206)
fonte
Um colega meu tinha esse comportamento sempre que o Outlook estava em execução. Tentando matar o outlook e testar novamente.
Você também pode tentar testar:
fonte
Descobrimos que, ao ser executado em certas contas de usuário, instâncias separadas do git.exe são bloqueadas em uma chamada para
WaitForSingleObject()
, portanto, apenas uma única operação do git.exe pode ser executada de uma vez. Alterar a conta do usuário contornou esse problema.Detalhes aqui: https://stackoverflow.com/a/13054022
fonte
Eu tenho MacAffee e dizer a ele para excluir o diretório .git e todos os subdiretórios da verificação em tempo real resolveu o problema de desempenho.
fonte
Conforme encontrado neste problema , executar com a virtualização do UAC desligada (não é necessário desabilitar totalmente o UAC) faz uma grande diferença.
Esta postagem explica como desligá-lo (veja no final da postagem, apenas uma configuração de registro).
Em um (grande) repo SVN ao qual estou me conectando, fazer apenas a alteração acima diminuiu o tempo necessário para "git svn rebase" de 15s para 5s, uma melhoria de fator 3.
fonte
Uma alternativa para mexer com o UAC do Windows 7 pode ser instalar o mysysgit fora da pasta Arquivos de programas. Por exemplo, em vez de "C: \ Arquivos de programas (x86) \ Git", tente instalar em "C: \ git"
Tentei mexer em 'Executar como administrador' e nos controles do UAC sem sucesso, mas desisti e comecei uma nova instalação. Eu estava recebendo cerca de 15 KiB / s no máximo antes, mas agora está acima de 60kiB / s.
fonte
Se desligar o UAC não melhorar o desempenho, tente desligar o driver luafv. Isso funcionou para mim depois de tentar quase tudo nesta página e algumas perguntas semelhantes. O Git passou de excepcionalmente lento para bastante decente.
Abra 'regedit' e encontre a chave de registro
Altere o valor de
Start
2 para 4.Encontrei os detalhes sobre como desabilitar
luafv
aqui . Observe que eu pessoalmente não tenho ideia do queluafv
é ou faz. Essa página fornece vários avisos sobre coisas ruins que podem acontecer se você desligá-lo, o que você provavelmente deve levar a sério.EDIT: O comentário abaixo apontou que entendi errado (o link mostra da maneira certa). Está consertado agora. Desculpe às pessoas cujos registros eu destruí :)
fonte
Estou solucionando isso há algum tempo e tive dificuldade em localizar a origem do problema. No final, descobri duas coisas que tiveram um impacto dramático:
fonte
O problema aqui pode ser a conclusão do bash se estiver habilitada, que é um pouco mais lenta no Windows do que no Linux.
Tente definir a variável PS1 para algo simples como "$" e veja se isso acelera as coisas. Em caso afirmativo, esteja ciente de que houve algumas otimizações na conclusão do bash nas versões recentes do git. Talvez você precise atualizar.
fonte
Isso funcionou para mim. Não espere que seja uma solução única para todos.
Verifique a variável de ambiente $ HOME no bash e no windows. Se apontar para uma conta de usuário, verifique o perfil / permissões do Windows do usuário. Altere a conta do usuário ou $ HOME de acordo.
fonte
Eu encontrei o mesmo problema ao executar git para Windows (msysgit) no Windows 7 x64 como uma conta de usuário limitada por algum tempo. Pelo que li aqui e em outros lugares, o tema comum parece ser a falta de privilégios administrativos e / ou UAC. Como o UAC está desativado em meu sistema, a explicação de que ele está tentando gravar / excluir algo no diretório de arquivos de programa faz mais sentido para mim.
Em qualquer caso, resolvi meu problema instalando a versão portátil do git 1.8 com zipinstaller. Observe que eu tive que descompactar o arquivo de distribuição .7z e reembalá-lo como um zip para que o zipinstaller funcione. Também tive que adicionar manualmente esse diretório ao caminho do meu sistema.
O desempenho está bom agora. Embora esteja instalado no diretório Arquivos de Programas (x86), para o qual não tenho permissão como usuário limitado, não parece ter o mesmo problema. Atribuo isso ao fato de que a versão portátil é um pouco mais conservadora em onde grava / exclui arquivos, o que provavelmente é o caso, ou à atualização de 1.7 para 1.8. Não vou tentar definir qual é o motivo, basta dizer que funciona muito melhor agora.
fonte
Você pode querer tentar desinstalar o msysgit, reiniciar o Windows, instalar a última versão do msysgit. Pareceu funcionar para mim. Encontrei esta sugestão aqui:
https://stackoverflow.com/a/4506192/1413941
EDITAR
PS Eu já tinha desabilitado o UAC antes de encontrar problemas lentos com o Git, então não sei se desabilitar o UAC é necessário ou não para fazer o Git funcionar mais rápido.
fonte
A melhor solução é executar como administrador, conforme apontado. No entanto, outra opção para tornar o status git rápido, pelo menos, é trustctime = false . Antes disso, o status do git levava cerca de 30 segundos e depois disso é a mesma quantidade que é mostrada na saída - levou X segundos para ...
fonte
Você também pode obter um importante aumento de desempenho alterando a seguinte configuração git:
Ao executar o
git status
comando simples no Windows 7 x64, meu computador levou mais de 30 segundos para ser executado. Depois que essa opção for definida, o comando é imediato.Ativar o próprio rastreio do Git conforme explicado na página a seguir me ajudou a encontrar a origem do problema, que pode ser diferente em sua instalação: https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so- lento
fonte
Provavelmente é uma questão de prompt que analisa seu repositório Git. Você pode testar fazendo "clear" em algum lugar fora de um repositório Git. E você pode acelerá-lo corrigindo git-completed.bash ou fazendo truques com core.filemode.
Quanto à integração do Visual Studio: Este é Open Source. É injusto esperar que outros trabalhem para você de graça.
Também acho bastante engraçado não fazer a pergunta na lista de e-mails msysGit, mas agora estou divagando.
fonte