2013-04-28 29 views
6

Trước tiên, tôi nhập git stash show.Sự cố tự động hoàn tất khi nhập git stash hiển thị stash @ {1}

Sau đó gõ stab, và nó cho thấy git stash show [email protected]{, cho đến bây giờ nó hoạt động tốt.

Nhưng sau khi tôi gõ và tab, nó becames git stash show [email protected]{1}, và nó là sai rõ ràng.

Tôi nghĩ rằng có thể có một số sai trong mã sau trong .git-completion.bash, nhưng tôi khó có thể đọc được điều này.

_git_stash() 
{ 
    local save_opts='--keep-index --no-keep-index --quiet --patch' 
    local subcommands='save list show apply clear drop pop create branch' 
    local subcommand="$(__git_find_on_cmdline "$subcommands")" 
    if [ -z "$subcommand" ]; then 
     case "$cur" in 
     --*) 
      __gitcomp "$save_opts" 
      ;; 
     *) 
      if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then 
       __gitcomp "$subcommands" 
      else 
       COMPREPLY=() 
      fi 
      ;; 
     esac 
    else 
     case "$subcommand,$cur" in 
     save,--*) 
      __gitcomp "$save_opts" 
      ;; 
     apply,--*|pop,--*) 
      __gitcomp "--index --quiet" 
      ;; 
     show,--*|drop,--*|branch,--*) 
      COMPREPLY=() 
      ;; 
     show,*|apply,*|drop,*|pop,*|branch,*) 
      __gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \                
        | sed -n -e 's/:.*//p')" 
      ;; 
     *) 
      COMPREPLY=() 
      ;; 
     esac 
    fi 
} 

Có ai biết cách khắc phục không?

Phiên bản Bash: GNU bash, phiên bản 4.2.37 (2) -release (i386-apple-darwin12.0.0).

phiên bản git: 1.8.0.3

toàn bộ nguồn: https://gist.github.com/pktangyue/5477924

+0

Tôi đang sử dụng bash '4.1.10 (1) '. Tôi có cùng chức năng hoàn thành được xác định trong '/ etc/bash-completion.d/git-completion.sh' của tôi và hoàn thành hoạt động tốt trên đầu của tôi. Bạn có thể cung cấp chi tiết về phiên bản bash của bạn không? Ngoài ra nếu bạn có thể đăng một liên kết (đến một gist có thể?) Để hoàn thành 'git-completion.sh' của bạn nó có thể hữu ích để so sánh. – Tuxdude

+0

@Tuxdude đã thêm thông tin. – pktangyue

+0

Tôi thu thập rằng bạn có ít nhất 10 stashes? Tôi đang cố gắng tái tạo tình hình của bạn. Tôi không gặp vấn đề này với hai stashes (git 1.8.2.3, bash 4.2.45, Arch Linux x86_64). – kampu

Trả lời

0

Bash-Hoàn nên đến như là một gói riêng biệt nhiều hay ít phụ thuộc vào Bash chính nó. Ví dụ tôi có phiên bản bash 4.1.10-4 và bash-completion phiên bản 1.3-1 từ Cygwin và hoàn thành bạn mô tả công việc như nó cần.

Vui lòng kiểm tra phiên bản Bash-Completion bạn đã cài đặt. Bạn cũng có thể thử cài đặt phiên bản mới nhất trực tiếp từ http://bash-completion.alioth.debian.org/ hoặc cố gắng chỉ thay thế tệp /etc/bash_completion.d/git bằng phiên bản ngược dòng.

0

Tôi gặp sự cố tương tự khi tải xuống tập lệnh hoàn thành git đã lỗi thời theo cách thủ công. Tôi đã có thể sửa chữa nó bằng cách sử dụng homebrew mới nhất.

brew install git bash-completion 

Xóa liên kết cũ mà bạn có thể có trong ".profile". Thay thế để sử dụng tập lệnh từ brew

if [ -f $(brew --prefix)/etc/bash_completion ]; then 
    . $(brew --prefix)/etc/bash_completion 
fi 

Bây giờ khi tôi bật tab, nó hoàn thành chính xác. (git stash show stash @ {0 .. cho git stash show stash @ {0})

Các vấn đề liên quan