![Zsh очень медленный внутри моего репозитория Git](https://rvso.com/image/1330216/Zsh%20%D0%BE%D1%87%D0%B5%D0%BD%D1%8C%20%D0%BC%D0%B5%D0%B4%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8%20%D0%BC%D0%BE%D0%B5%D0%B3%D0%BE%20%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F%20Git.png)
Мой Zsh очень медленный внутри определенного моего репозитория Git. Когда я гуглю "zsh git slow", я получаю кучу результатов о Gitавтодополнениемедленно, но автодополнение — это не обязательно моя проблема; этовсе.
Я попробовал удалить все плагины, и, как ни странно, это вообще ничего не дало, когда я открыл новую оболочку. Zsh все равно будет делать Git-вещи внутри моего Git-репозитория.
Я нашел этот фрагмент наэта страница:
function git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
Это снова ускорило процесс, но также выдало мне подсказку, которая выглядит примерно так:
➜ snip git:(master
Обратите внимание на отсутствующую правую скобку. Это как-то неубедительно. Плюс все это выглядит как хак, который мне не следует делать.
Есть еще этот многообещающий вопрос по SU, но ссылки на принятый ответ не работают.
Как сделать так, чтобы Zsh не тормозил внутри репозитория Git?
решение1
Вы можете выполнить следующую команду, чтобы полностью отключить функцию git status.
git config --global oh-my-zsh.hide-status 1
Или добавьте следующую строку в ваш ~/.zshrc
.
DISABLE_UNTRACKED_FILES_DIRTY="true"
решение2
Чтобы отследить команды оболочки, которые вызываются, когда она медленная, вы можете запустить: set -x
или добавить в файлы запуска. Это покажет вам все команды, включая ту, которая отвечает за автодополнение.
Если вы считаете, что некоторые git
команды работают медленно, вы можете определить дополнительные переменные, такие как:
exports GIT_TRACE=1
Чтобы увидеть больше примеров, см.:Как отладить проблемы, связанные с git/git-shell?
решение3
Я удалил zsh-autosuggestions
как плагин и тогда это было быстрее. В моем случае это не имело никакого отношения к git
.
решение4
Вы можете попробовать подтвердить источник вашей медлительности с помощью zprof
. Добавьте это к вашему ~/.zshrc
(или эквиваленту):
zmodload zsh/zprof
затем запустите zprof
после каждой команды, чтобы получить сводку. В моем случае причиной замедления был совершенно не связанный с ней плагин.