2013-04-28 19 views
6

İlk önce git stash show yazdım. Git stash show stash yazarken otomatik tamamlama sorunu @ {1}

Sonra s ve sekmesini yazın ve şimdi gayet iyi çalışıyor dek o git stash show [email protected]{ göstermektedir.

Ama ve sekme yazdıktan sonra, bu git stash show [email protected]{1} hale gelebilir ve bunun bariz yanlıştır.

Aşağıdaki kodda .git-completion.bash'da yanlış olabileceğini düşünüyorum, ancak bunu okuyamıyorum.

_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 
} 

Bunu nasıl düzelteceğini bilen var mı?

Bash sürümü: GNU bash, sürüm 4.2.37 (2) -release (i386-apple-darwin12.0.0).

git sürümü: 1.8.0.3

bütün kaynak: https://gist.github.com/pktangyue/5477924

+0

Bash '4.1.10 (1)' kullanıyorum./Etc/bash-completion.d/git-completion.sh' içinde tanımlanmış aynı tamamlama işlevine sahibim ve tamamlama benim için iyi çalışıyor. Bash versiyonunuz hakkında bilgi verebilir misiniz? Ayrıca eğer bir linke (eğer bir gist olabilir?) Tüm 'git-completion.sh' için gönderebilirseniz, karşılaştırma yapmak yararlı olabilir. – Tuxdude

+0

@Tuxdude daha fazla bilgi ekledi. – pktangyue

+0

En az 10 stashınız olduğunu topladım? Durumunu çoğaltmaya çalışıyorum. Bu problemi iki stash ile yaşamadım (git 1.8.2.3, bash 4.2.45, Arch Linux x86_64). – kampu

cevap

0

Bash-Tamamlama Bash kendisinin daha fazla veya daha az bağımsız ayrı bir paket olarak gelmelidir. Mesela Cygwin’den bash versiyon 4.1.10-4 ve bash-completion version 1.3-1’im var ve tanımladığınız tamamlama gerektiği gibi çalışıyor.

Yüklemiş olduğunuz Bash-Tamamlamasının hangi sürümünü kontrol edin. En son sürümü doğrudan http://bash-completion.alioth.debian.org/'dan yüklemeyi deneyebilir veya yalnızca /etc/bash_completion.d/git dosyasını yukarı akış sürümüyle değiştirmeyi deneyebilirsiniz.

0

Güncel olmayan git tamamlama komut dosyasını el ile yüklediğimde aynı sorunu yaşadım. En son homebrew'u kullanarak tamir edebildim.

brew install git bash-completion 

".profile" dosyanızdaki eski bağlantıları kaldırın. Komutu kullanmak için değiştirin:

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

Şimdi, etiketlendiğimde, düzgün şekilde tamamlandı. (git stash show stash @ {0 .. git stash show stash @ {0})

İlgili konular