Выполнение команд git в Debian и Ubuntu в WSL очень медленно для больших проектов - PullRequest
0 голосов
/ 08 мая 2018

У нас очень большой проект с общим количеством коммитов около 15.000.Я запускаю Debian 9.3 на моей машине с Windows, используя WSL.Моя версия git 2.17.0.

Когда я запускаю такие команды, как git status, выполнение занимает не менее 20 секунд.Даже если никаких изменений не было сделано.

Я пробовал несколько более старых версий git и даже пробовал Ubuntu, но я все еще испытываю тот же результат.Я пытался запустить несколько команд из разных постов здесь и на других сайтах, но ни одна из них не сработала.

Забавно: когда я открываю cmd.exe или Git Bash в Windows, это занимает меньше временичем за секунду до запуска git status.

Что может быть причиной этого?Что я могу сделать, чтобы это исправить?

Ответы [ 4 ]

0 голосов
/ 04 ноября 2018

В моем WSL с Ubuntu я обнаружил, что самая ПЕРВАЯ команда «git status» намного медленнее, чем вторая. Вероятно, при первом запуске выполняется кэширование или индексация. Вторая скорость «git status» мне подходит.

0 голосов
/ 25 мая 2018

Вы можете получить некоторые детали профилирования, используя GIT_TRACE_PERFORMANCE env var:

$ GIT_TRACE_PERFORMANCE=1 git status -sb -uno
08:51:54.525808 read-cache.c:1889       performance: 0.000330659 s: read cache .git/index
08:51:54.528532 preload-index.c:112     performance: 0.002669928 s: preload index
08:51:54.528667 read-cache.c:1447       performance: 0.000109768 s: refresh index
08:51:54.528892 diff-lib.c:250          performance: 0.000056516 s: diff-files
08:51:54.534630 diff-lib.c:527          performance: 0.005070461 s: diff-index
## wip/foo
08:51:54.536419 trace.c:420             performance: 0.013503141 s: git command: git status -sb -uno
0 голосов
/ 03 июня 2018

Ran

time git clone https://github.com/git/git.git

и

time git clone git git.1

на Thinkpad T460s в текущем WSL, MSYS2 и Fedora 28 с виртуальной коробкой (без графического интерфейса, Putty).

Реальное время для местного клона было

Fedora 3s, WSL 67s, MSYS2 65s

После выключения Защитника время уменьшается до

WSL 11s, MSYS2 13s

Итак

  • VirtualBoxed Fedora без графического интерфейса - самая быстрая
  • Защитник дорогой. Исключите ваш рабочий мерзавец root.
  • не нашел практической разницы, если рабочий каталог WSL git находился в ~ или / c / mnt

Пожалуйста, не стесняйтесь повторить небольшой тест.

0 голосов
/ 18 мая 2018

Обновление за июнь 2019 года: WSL 2 идет , а вместе с ним полная совместимость системных вызовов.
Это должно значительно повысить производительность команды Git!


Оригинальный ответ 2018:

Git работает лучше всего, когда выполняется на хосте без какого-либо промежуточного слоя.

Например, если ваше хранилище находится в общей папке, Git будет работать значительно медленнее.
В случае WSL доступ к репо осуществляется локально, но посредством преобразования файловой системы между различными операциями файловой системы Linux в операциях ядра NT.

translation

Этого было бы достаточно, чтобы объяснить снижение производительности, особенно в больших репозиториях Git. Кроме того, убедитесь, что ваш $PATH не ссылается на папки с исполняемым файлом Windows, которые могут вызываться вместо Linux

Возможные причины:

  • эмуляция файловой системы (медленно): выпуск WSL 2759
  • Shell Prompt : убедитесь, что вы проверили вашу команду в базовой командной оболочке, без каких-либо сложных PS1 вычислений
  • Защитник Windows AV : попытаться исключить (для тестирования) управляемую WSL файловую систему из проверки AV.
...