Bagaimana saya bisa secara selektif menonaktifkan integrasi kontrol versi zsh ketika CWD saya menggunakan sistem file jarak jauh?

16

Saya menjalankan zsh di OSX dan kadang-kadang saya harus bekerja pada volume sshfs yang terpasang. Namun, git BENAR-BENAR lambat di atas sshfs mounts. Prompt saya memanfaatkan hal-hal mode vc yang disediakan zsh bawaan, tetapi dalam kasus ini saya ingin melewati bagian itu.

Saya ingin menonaktifkan integrasi vc secara selektif setiap kali CWD saya berada di sistem file yang terpasang. Bagaimana saya bisa melakukan itu?

Saat ini saya mengaktifkan git info di prompt saya menggunakan (kira-kira) cuplikan dari .zshrc saya (well, .oh-my-zsh / tema ini, tetapi Anda mendapatkan idenya):

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) '
Chris R
sumber
Mungkin ini akan membantu ... superuser.com/questions/46321/tweaking-zsh-git-autocompletion
Joe Internet
Tidak, itu bukan penyelesaian yang merupakan masalah
Chris R
Oke, maaf untuk jawaban "rtfm" ... lihat bagian 26.4 dari manual ... ini akan membantu ... zsh.sourceforge.net/Doc/Release/…
Joe Internet
Bisakah Anda menambahkan bagian zshrc yang relevan yang Anda gunakan untuk mengaktifkan ini?
jumlahnya banyak

Jawaban:

9

Lihat Versi-Kontrol-Informasi

Cari bagian 'pola cacat' (sekitar 20% ke bawah halaman).
Dengan asumsi mount jarak jauh Anda sudah diperbaiki, atau relatif tetap, yaitu /mnt/remote/*atau Anda dapat membuat daftar semuanya, Anda harus dapat membuat regex untuknya.

Contoh di tautan dinonaktifkan di vcs_infobawah ~/.zsh/, melalui:

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

Saya kira Anda bisa membuat angka zshrc atau yang setara (maaf - bash pengguna) yang remote pada saat startup (atau secara berkala, atau ...) dan memperbarui zstylesesuai.

Brett Procter
sumber