Msysgit bash ужасно медленный в Windows 7

Я люблю git и постоянно использую его на OS X дома. На работе мы используем svn в Windows, но хотим перейти на git, как только инструменты полностью созрели (а не только TortoiseGit, но и нечто похожее на действительно приятную интеграцию Visual Studio, предоставляемую VisualSVN). Но я отвлекаюсь...

Недавно я установил msysgit на моем компьютере с Windows 7, а при использовании включенной версии bash она ужасно медленно. И не только операции git; clear занимает около пяти секунд. Aaaah!

Кто-нибудь испытал подобную проблему?


Изменить. Похоже, что msysgit не играет хорошо с UAC и может быть просто крошечным надзором за дизайном от разработки на XP или запуска Vista или 7 с отключенным UAC; начало git Bash с использованием Run as administrator приводит к тому, что скорость молниеноса я вижу с OS X (или на 7 после запуска git Bash без подключения к сети - см. ответ @Gauthier).

Изменить 2: AH HA! См. мой ответ.

Ответ 1

Решение для медленности в Vista или 7 работает Git Bash с помощью Run as administrator (или отключает UAC для Git Bash ярлык... или полностью отключить UAC . Разница - ночь и день, а использование Git на 7 снова является удивительным.

Это похоже на известную проблему, и, как я предположил, XP в качестве среды разработки для msysgit частично отвечает.

Ответ 2

Вы можете значительно ускорить git в Windows, выполнив три команды, чтобы установить некоторые параметры конфигурации:

$ git config --global core.preloadindex true
$ git config --global core.fscache true
$ git config --global gc.auto 256

Примечания:

  • core.preloadindex Операции файловой системы параллельны, чтобы скрыть латентность (обновление: включено по умолчанию в git 2.1)

  • core.fscache исправляет проблемы UAC, поэтому вам не нужно запускать git в качестве администратора (обновление: включено по умолчанию в git для Windows 2.8)

  • gc.auto минимизирует количество файлов в .git/

Ответ 3

Для меня проблема заключалась в использовании __git_ps1 в командной строке - я думаю, из-за медленного доступа к диску в msysgit.

Решение заключалось в том, чтобы удалить $(__ git_ps1) из строк PS1 =... в /etc/profile

быстрый тест, если это решение применяется: в оболочке git введите тип экспорт PS1 = '$' и проверьте скорость ваших операций.

Ответ 4

Пробовал почти все советы здесь (в том числе один из моего другого ответа) на новой машине, но они не работали, Git все еще медленно, как черт.

Затем я посмотрел программное обеспечение virusscanning (которое было предварительно установлено): я отключено сканирование в режиме реального времени McAfee Security Center, а престо: Git быстро вспыхивает! Время, необходимое для "git svn rebase", уменьшилось с 30 с до 5 с (!).

Надеюсь, это полезно для других людей, которые по-прежнему испытывают проблемы с медленным Git в Windows, я потерял время, чтобы понять это.

Ответ 5

Увы, "Запуск от имени администратора" не работал у меня, но, как сказал Кевин Л, отсоединив сетевой адаптер, запустив git bash, то повторное соединение работало нормально. Поэтому я завернул это в пакетный script и поместил в него ярлык в меню "Пуск", помеченном как admin:

netsh interface set interface "Local Area Connection" DISABLED
cd "%USERPROFILE%\Documents\Visual Studio 2010\Projects"
start cmd /c ""C:\Program Files\Git\bin\sh.exe" --login -i"
netsh interface set interface "Local Area Connection" ENABLED

Работает с удовольствием, пока я помню, что моя сеть моментально отключена.

(Win 7 Professional SP1, git версия 1.7.8-preview20111206)

Ответ 6

У моего коллеги было такое поведение, когда Outlook работал. Повторение попыток убийства и повторного тестирования.

Вы также можете попробовать:

  • без подключения к какой-либо сети,
  • без запуска антивируса,
  • без какой-либо другой программы.

Ответ 7

Мы обнаружили, что при запуске на определенных учетных записях пользователей отдельные блоки git.exe блокируются при вызове WaitForSingleObject(), поэтому только одна операция git.exe может эффективно запускаться сразу. Изменение учетной записи пользователя работало над этой проблемой.

Подробности здесь: fooobar.com/questions/20188/...

Ответ 8

У меня есть MacAffee и я говорю об исключении каталога .git, и все подкаталоги из сканирования в режиме реального времени рассматривают проблему с производительностью.

Ответ 9

Как указано в этой проблеме, работа с виртуализацией UAC отключена (не обязательно отключить UAC полностью) имеет большое значение.

Этот пост объясняет, как отключить его (см. нижнюю часть сообщения, только один параметр реестра).

На одном (большом) SVN-репо я подключаюсь к тому, что только что вышеизложенное изменение снизило время, необходимое для "git svn rebase" с 15 с до 5 с, что улучшило фактор 3.

Ответ 10

Если выключение UAC не улучшает производительность, попробуйте отключить драйвер luafv. Это сработало для меня, попробовав почти все на этой странице и пару подобных вопросов. Git прошел от неприлично медленного до довольно приличного.

Откройте 'regedit' и найдите раздел реестра

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv

Измените значение Start с 2 на 4.

Я нашел информацию о том, как отключить luafv здесь. Обратите внимание, что я лично не знаю, что такое luafv. Эта страница дает различные предупреждения о плохих вещах, которые могут произойти, если вы отключите ее, что вы, вероятно, должны серьезно относиться.

РЕДАКТИРОВАТЬ: В приведенном ниже замечании я указал, что это неправильный путь (ссылка имеет правильный путь). Теперь это исправлено. Извините людей, чьи реестры я испортил:)

Ответ 11

Альтернативой взаимодействию с UAC для Windows 7 может быть установка mysysgit вне папки Program Files. Например, вместо "C:\Program Files (x86)\ Git", попробуйте установить в "C:\Git"

Я пытался возиться с "Run as admin" и контроль UAC безрезультатно, но сдался и начал новую установку. Раньше я получал максимум 15KiB/s, но теперь он превышает 60kiB/s.

Ответ 12

Я только что немного разобрался с этим, и мне было трудно определить источник проблемы. В итоге я нашел две вещи, которые оказали огромное влияние:

  • Отключение службы поиска Windows. Это оказало существенное влияние на производительность.
  • Закрытие Git Расширений. Открыв окно Git Extensions Browse, открытое в фоновом режиме, время выполнения команды Cygwin Git увеличилось на кажущийся случайный коэффициент примерно до 10.

Ответ 13

Проблема здесь может заключаться в bash -комплекте, если это разрешено, что довольно медленно в Windows, чем Linux.

Попробуйте установить переменную PS1 на что-то простое, например "$", и посмотрите, ускоряет ли это. Если это так, имейте в виду, что были некоторые оптимизации для bash -комплекса в последних версиях git. Возможно, вам нужно обновить.

Ответ 14

Это сработало для меня. Не ожидайте, что это будет один размер, подходящий для всего решения.

Проверьте переменную среды $HOME в bash и окнах. Если он указывает на учетную запись пользователя, проверьте профиль/разрешения пользователя. Измените либо учетную запись пользователя, либо $HOME соответственно.

Ответ 15

Я столкнулся с той же проблемой, с которой работает git для Windows (msysgit) в Windows 7 x64 как ограниченная учетная запись пользователя довольно долгое время. Из того, что я читал здесь и других мест, общей темой, по-видимому, является отсутствие административных привилегий и/или UAC. Поскольку UAC отключен в моей системе, объяснение, что он пытается записать/удалить что-то в каталоге файлов программ, имеет для меня наибольшее значение.

В любом случае я решил проблему, установив переносимую версию git 1.8 с помощью zipinstaller. Обратите внимание, что мне пришлось распаковать файл распространения .7z и переупаковать его как zip для работы zipinstaller. Мне также пришлось вручную добавить этот каталог в мой системный путь.

Теперь производительность прекрасна. Несмотря на то, что он установлен в каталоге Program Files (x86), у которого у меня нет разрешений для ограниченного пользователя, он, похоже, не страдает от той же проблемы. Я приписываю это либо тому факту, что переносимая версия немного более консервативна, когда она записывает/удаляет файлы, что, вероятно, имеет место, или для обновления с 1.7 до 1.8. Я не собираюсь пытаться определить, какая причина, достаточно сказать, что сейчас это работает намного лучше.

Ответ 16

Возможно, вы захотите попробовать удалить msysgit, перезапустить окна, установить последнюю версию msysgit. Казалось, это трюк для меня. Я нашел это предложение здесь:

fooobar.com/questions/20131/...

ИЗМЕНИТЬ

PS У меня уже отключен UAC, прежде чем я столкнулся с медленными проблемами Git, поэтому я не знаю, требуется ли отключить UAC или нет, чтобы быстро получить Git.

Ответ 17

Лучшим решением является запуск в качестве администратора, как указано. Однако другой способ сделать статус git быстрым, по крайней мере, является trustctime = false. До этого статус git занял около 30 секунд, а после этого это то же самое количество, которое отображается на выходе - потребовалось X секунд, чтобы...

Ответ 18

Вы также можете повысить производительность, изменив следующую конфигурацию git:

git config --global status.submoduleSummary false

При запуске простой команды git status в окне 7 x64 для запуска моего компьютера потребовалось более 30 секунд. После того, как этот параметр был определен, команда будет немедленной.

Активация git собственной трассировки, как описано на следующей странице, помогла мне найти причину проблемы, которая может отличаться в вашей установке: https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-slow

Ответ 19

Вероятно, это вопрос подсказки, которая анализирует ваш репозиторий Git. Вы можете протестировать, выполнив "clear" где-то вне репозитория Git. И вы можете ускорить его, либо исправляя git -completion.bash, либо играя трюки с core.filemode.

Что касается интеграции Visual Studio: это Open Source. Нечестно ожидать, что другие будут работать для вас бесплатно.

Мне также смешно не задавать вопрос в списке рассылки msysGit, но теперь я отвлекаюсь.