update mac installing instalar git zsh

git - mac - zsh god



oh-my-zsh lento, pero solo para cierto repositorio de Git (8)

Finalmente lo resolví. Mi proyecto tenía una carpeta de rake con una tonelada de archivos (como 20,000). No tengo idea de para qué estaba allí esa carpeta, pero la eliminé, Zsh ya no es lenta y mi aplicación todavía parece funcionar.

Recientemente comencé a usar Zsh y es increíble. Desafortunadamente, para el proyecto considero que mi proyecto "principal", todo es lento. Lo que quiero decir es que cada vez que ejecuto un comando ( ls , por ejemplo), hay un retraso de aproximadamente cinco segundos entre el momento en que se ejecuta el comando y el tiempo en que puedo usar el terminal nuevamente.

¿Qué podría ser diferente en este repo que hace que Zsh sea tan lento? Supongo que es algo específico de Zsh porque no hubo ningún problema antes de comenzar a usar Zsh. Intenté hacer un git clean pero no hizo ninguna diferencia notable.

Estoy en Mac OS X, si eso importa.

Actualización: Resulta que esta línea de mi .zshenv es lo que lo hacía lento:

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

Si comento esa línea, pasa de tomar aproximadamente 3 segundos a tomar aproximadamente 1 segundo. Desafortunadamente, necesito esa línea, ya que muchos de mis proyectos usan RVM. No sé qué hacer ahora.

Actualización 2 : esto parece ser específicamente una cosa oh-my-zsh. Si no carga ~/.oh-my-zsh/oh-my-zsh.sh , no tengo el problema.



Oh_my_zsh parece ser lento para algunos repos porque comprueba el estado del repositorio después de cada comando. Este comportamiento se puede anular en la nueva versión de .oh_my_zsh. Descomente la siguiente línea en .zshrc:

DISABLE_UNTRACKED_FILES_DIRTY = "true"

Después de esto, reinicie su terminal o ejecute lo siguiente:

fuente ~ / .zshrc


Para mí es lento en VirtualBox (el invitado) porque estoy usando una carpeta sincronizada. Todavía quiero que esté habilitado en OS X (el host) donde es lo suficientemente rápido. En lugar de usar una configuración de configuración local que se almacena con el repositorio y la cambiaría tanto en el invitado como en el host, utilizo una configuración de configuración global solo en el invitado :

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

Si lo quiero solo para un solo repo:

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


Podría ser el tema que llama a git y rvm stuff después de cada comando.

Para mí, cambiando ZSH_THEME="juanghurtadoto" a ZSH_THEME="miloshadzic" el retraso de 2 segundos después de cada comando por completo.

Los temas se pueden encontrar en https://github.com/robbyrussell/oh-my-zsh/wiki/themes


Probablemente la solución más sencilla y confiable que se me ocurrió fue simplemente escribir

bash

Hice esto en el directorio con mi enorme repositorio de git y todo funciona muy bien.


Puedes agregar esto a tu git config y zsh ya no verificará el estado

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

Explicación

Hay dos funciones centrales de git en lib/git.zsh :

  • git_prompt_info()
  • parse_git_dirty()

Cada método tiene un interruptor de configuración git para desactivarlo:

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

Algunos temas crean sus propias consultas de git y, a veces, ignoran estas banderas .


Si no le importan otros programas de control de versión pero git , puede deshabilitar todos los vcs_info s en su *.zsh-theme y reemplazarlos con comandos git nativos.

Por ejemplo, pellizco mi agnoster.zsh-theme por:

  1. comentar / eliminar todas las líneas que tienen vcs_info ,
  2. Editar código en la función prompt_git() desde:

    ref="$vcs_info_msg_0_" a

    ref="$(git branch 2>/dev/null | grep -Po ''(?<=/* ).*$'')"

Así que, básicamente, simplemente deshabilité todas vcs_info acciones de vcs_info y, en cambio, uso un comando git nativo para verificar los estados del repositorio. Como resultado, aún puedo ver mi útil indicador de git con una velocidad tan rápida como trabajar en un directorio que no es de git. Con esta pequeña modificación, mi zsh puede trabajar 4-5 veces más rápido en los repositorios de git.

Nota: use grep de GNU no grep de BSD.