163 votes

oh-my-zsh lent, mais seulement pour certains repo Git

J'ai récemment commencé à utiliser Zsh et c'est génial. Malheureusement, pour le projet que je considère comme mon projet "principal", tout est lent. Ce que je veux dire, c'est qu'à chaque fois que je lance une commande - ls Il y a un délai d'environ cinq secondes entre le moment où la commande est exécutée et le moment où je peux à nouveau utiliser le terminal.

Qu'est-ce qui pourrait être différent dans ce repo qui rend Zsh si lent ? Je suppose que c'est un truc spécifique à Zsh car il n'y avait pas de problème avant que je commence à utiliser Zsh. J'ai essayé de faire un git clean mais ça n'a pas fait de différence notable.

Je suis sur Mac OS X si cela compte.

Mise à jour : Il s'avère que cette ligne de mon .zshenv est ce qui le rendait lent :

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

Si je commente cette ligne, le processus passe d'environ 3 secondes à environ 1 seconde. Malheureusement, j'ai besoin de cette ligne, car plusieurs de mes projets utilisent RVM. Je ne sais pas quoi faire maintenant.

Mise à jour 2 Il semble que ce soit spécifiquement un truc de oh-my-zsh. Si je ne charge pas ~/.oh-my-zsh/oh-my-zsh.sh je n'ai pas de problème.

330voto

Pascalius Points 1202

Vous pouvez ajouter ceci à votre configuration git et zsh ne vérifiera plus le statut.

git config --add oh-my-zsh.hide-status 1
git config --add oh-my-zsh.hide-dirty 1

Explication

Il y a deux fonctions centrales de git dans lib/git.zsh :

  • git_prompt_info()
  • parse_git_dirty()

Chaque méthode a un commutateur git config pour la désactiver :

  • oh-my-zsh.hide-status
  • oh-my-zsh.hide-dirty

Certains thèmes créent leurs propres requêtes git et parfois ignorez ces drapeaux .

40voto

Peeyush Goela Points 453

Oh_my_zsh semble être lent pour certains dépôts car il vérifie l'état du dépôt après chaque commande. Ce comportement peut être modifié dans la nouvelle version de .oh_my_zsh . Il suffit de décommenter la ligne suivante dans .zshrc :

DISABLE_UNTRACKED_FILES_DIRTY="true" (en anglais)

Après cela, redémarrez votre terminal ou exécutez ce qui suit :

source ~/.zshrc

20voto

bat Points 5380

Pour moi, c'est lent sur VirtualBox (l'invité) parce que j'utilise un dossier synchronisé. Je veux quand même l'activer sur OS X (l'hôte) où il est assez rapide. Au lieu d'utiliser un paramètre de configuration local qui est stocké avec le dépôt et qui le modifierait à la fois sur l'invité et sur l'hôte, j'utilise un fichier paramètre de configuration globale uniquement sur l'invité :

git config --global --add oh-my-zsh.hide-dirty 1

Si je le veux juste pour un seul repo :

git config --add oh-my-zsh.hide-dirty 1

19voto

James EJ Points 185

Cela pourrait être le thème qui appelle des trucs git et rvm après chaque commande.

Pour moi, changer ZSH_THEME="juanghurtadoto" a ZSH_THEME="miloshadzic" a supprimé complètement le délai de 2 secondes après chaque commande.

Les thèmes peuvent être trouvés à https://github.com/robbyrussell/oh-my-zsh/wiki/themes

13voto

VonC Points 414372

Il existe plusieurs façons d'accélérer un oh-my-zsh comme indiqué dans " zsh démarre incroyablement lentement ", nettoyant ainsi la section des plugins.

Par exemple, l'article de blog " Correction de la lenteur de l'invite git-svn de oh-my-zsh " mentionne le parse_git_dirty comme un problème potentiel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X