Alguns dias atrás eu escrevi uma grande quantidade de testes e como meu computador é meio lento decidi colocar o projeto em um servidor (com muito mais poder de computação) para fazer os testes lá. Para economizar tempo empurrando e puxando repetidamente, montei o diretório com meu projeto via sshfs
.
sshfs jiri@some.server.com:my_project ~/projects/my_project
Até o momento estava tudo ok até que tentei cd
o local montado. Meu terminal congelou! Surpreendentemente, consegui abrir o diretório montado em nautilus
. Depois de alguma pesquisa, descobri o problema – meu prompt zsh resolveu, porque eu tinha algumas informações úteis do git lá. Demora MUITO tempo para obter o status do git em vez do sshfs.
Eu hackeei meu prompt para desativar as informações de controle de versão em meu prompt quando ele pwd
é montado via sshfs. Isto é o que eu trouxe:
autoload -U colors
autoload -Uz vcs_info
colors
setopt PROMPT_SUBST
zstyle ':vcs_info:*' enable git hg svn
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' stagedstr '%F{green}M%f'
zstyle ':vcs_info:*' unstagedstr '%F{yellow}M%f'
zstyle ':vcs_info:git*+set-message:*' hooks git-untracked
zstyle ':vcs_info:git*' formats " %s %b %m%c%u"
+vi-git-untracked() {
if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
git status --porcelain | grep '??' &> /dev/null ; then
hook_com[unstaged]+='%F{red}?%f'
fi
}
precmd () {
if [[ `stat -f -L -c %T $PWD` == *fuseblk* ]]; then
echo ""
else
vcs_info
fi
}
PROMPT="%B%~%b %{$fg_bold[red]%}%#%{$reset_color%} "
RPROMPT='%h %n%{$fg_bold[red]%}@%{$reset_color%}%m${vcs_info_msg_0_}'
É assim que meu prompt se parece: