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


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

Я недавно установил msysgit на моей машине Windows 7, и при использовании включенной версии bash, это АТО медленно. И не только операции git;clear занимает около пяти секунд. ААА!

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


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

Edit 2:АХ-ХА! смотрите мой ответ.

19 82

19 ответов:

вы можете значительно ускорить 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/

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

это, кажется, связано с известная проблема и, как я предположил, XP как среда разработки для msysgit - это частично отвечает.

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

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

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

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

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

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

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

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 version 1.7.8-preview20111206)

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

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

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

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

подробности здесь:https://stackoverflow.com/a/13054022

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

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

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

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

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

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

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

откройте regedit и найдите ключ реестра

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv

изменить значение Start от 2 до 4.

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

EDIT: комментарий ниже указал, что я получил это неправильный путь (ссылка имеет правильный путь). Теперь это исправлено. Извините людей, чьи реестры я разгромил:)

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

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

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

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

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

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

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

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

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

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

https://stackoverflow.com/a/4506192/1413941

EDIT

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

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

вы также можете получить важный прирост производительности, изменив следующую конфигурацию 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

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

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

Я также нахожу довольно забавным не задавать вопрос в списке рассылки msysGit, но теперь Я отвлекся.