CWD가 원격 파일 시스템에있을 때 zsh의 버전 제어 통합을 선택적으로 비활성화하려면 어떻게해야합니까?


16

OSX에서 zsh를 실행하고 있으며 때때로 마운트 된 sshfs 볼륨에서 작업해야합니다. 그러나 git은 sshfs 마운트보다 정말 느립니다. 내 프롬프트는 zsh가 제공하는 vc 모드 항목을 사용하지만이 경우 해당 부분을 건너 뛰고 싶습니다.

CWD가 마운트 된 파일 시스템에있을 때마다 vc 통합을 선택적으로 비활성화하고 싶습니다. 어떻게해야합니까?

나는 현재 내 .zshrc (잘, .oh-my-zsh / themes 스 니펫을 사용하여) 프롬프트에서 git info를 활성화하고 있습니다.

zstyle ':vcs_info:*' enable hg git bzr svn p4

zstyle ':vcs_info:(hg*|git*):*' get-revision true
zstyle ':vcs_info:(hg*|git*):*' check-for-changes true

# rev+changes branch misc
zstyle ':vcs_info:hg*' formats "[%i%u %b%m]"
zstyle ':vcs_info:hg*' actionformats "(%{$fg_bold[red]%}%a%{$reset_color%})[%i%u %b%m]"

# hash changes branch misc
zstyle ':vcs_info:git*' formats "[%{$fg[yellow]%}%12.12i%{$reset_color%} %u %{$fg[magenta]%}%b%{$reset_color%}%m]"
zstyle ':vcs_info:git*' actionformats "(%a)[%{$fg[yellow]%}%12.12i%{$reset_color%} %u %{$fg[magenta]%}%b%{$reset_color%}%m]"

zstyle ':vcs_info:git*+set-message:*' hooks git-st git-stash

zstyle ':vcs_info:hg*:netbeans' use-simple true

zstyle ':vcs_info:hg*:*' get-bookmarks true

zstyle ':vcs_info:hg*:*' get-mq true
zstyle ':vcs_info:hg*:*' get-unapplied true
zstyle ':vcs_info:hg*:*' patch-format " mq(%g):%{$fg[green]%}%n%{$reset_color%}/%{$fg_bold[blue]%}%c%{$reset_color%} %{$fg[green]%}%p%{$reset_color%}"
zstyle ':vcs_info:hg*:*' nopatch-format ""

zstyle ':vcs_info:hg*:*' unstagedstr " ?"
zstyle ':vcs_info:hg*:*' hgrevformat "%{$fg[yellow]%}%r%{$reset_color%}" # only show local rev.
zstyle ':vcs_info:hg*:*' branchformat "%{$fg[magenta]%}%b%{$reset_color%}" # only show branch

# Show remote ref name and number of commits ahead-of or behind
function +vi-git-st() {
    local ahead behind remote
    local -a gitstatus

    # Are we on a remote-tracking branch?
    remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} \
        --symbolic-full-name 2>/dev/null)/refs\/remotes\/}

    if [[ -n ${remote} ]] ; then
        # for git prior to 1.7
        # ahead=$(git rev-list origin/${hook_com[branch]}..HEAD | wc -l)
        ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l | tr -s ' ')
        (( $ahead )) && gitstatus+=( " ${c3}+${ahead}${c2}" )

        # for git prior to 1.7
        # behind=$(git rev-list HEAD..origin/${hook_com[branch]} | wc -l)
        behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l | tr -s ' ')
        (( $behind )) && gitstatus+=( " ${c4}-${behind}${c2}" )

        hook_com[branch]="${hook_com[branch]} [${remote}${(j:/:)gitstatus}]"
    fi
}

# Show count of stashed changes
function +vi-git-stash() {
    local -a stashes

    if [[ -s ${hook_com[base]}/.git/refs/stash ]] ; then
        stashes=$(git stash list 2>/dev/null | wc -l)
        hook_com[misc]+=" (${stashes} stashed)"
    fi
}

precmd () { vcs_info }
PROMPT='
%{$(get_prompt_user_color)%}%n%{$reset_color%} at %{$(get_prompt_host_color)%}%m%{$reset_color%} in %{$fg_bold[green]%}%~%{$reset_color%} ${vcs_info_msg_0_}
$(virtualenv_info)$(prompt_char) '

아마 이것이 도움이 될 것입니다 ... superuser.com/questions/46321/tweaking-zsh-git-autocompletion
Joe Internet

아니요, 문제가되는 것은 아닙니다
Chris R

좋아요, "rtfm"답변 죄송합니다 ... 매뉴얼의 섹션 26.4를 참조하십시오 ... 도움이됩니다 ... zsh.sourceforge.net/Doc/Release/…
Joe Internet

이를 활성화하는 데 사용한 관련 zshrc 섹션을 추가 할 수 있습니까?
다항식

답변:


9

버전 제어 정보를 살펴보십시오

'비활성화 패턴' 섹션을 검색하십시오 (약 20 % 감소).
원격 마운트가 고정되어 있거나 상대적으로 고정되어 있다고 가정하거나 /mnt/remote/*모두 나열 할 수 있다고 가정하면 정규식을 사용할 수 있습니다.

링크의 예는 다음을 통해 비활성화 vcs_info되어 있습니다 ~/.zsh/.

zstyle ':vcs_info:*' disable-patterns "$HOME/.zsh(|/*)"

zshrc 또는 이와 동등한 (죄송합니다-bash 사용자)가 시작시 (또는 주기적으로 또는 ...) 원격인지 파악하고 zstyle그에 따라 업데이트 할 수 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.