Como posso obter a conclusão do git para mostrar nomes de commit?

3

Há algo que não entendo sobre o Git e conclusão em Zsh.

Estou usando uma máquina Windows com Git (v2.11. para Windows) e Cygwin com Zsh (com Babun). Quando eu digito git checkout e bato TAB duas vezes, recebo um prompt de conclusão para ramos e nomes de objetos:

Muitolegal!Agora,naminhamáquinaOSXcomGit(2.13.0paraMac,instaladoviaHomebrew)eZsh,quandoeudigitogitcheckoutebatoTABduasvezes,eusóentendoisso:

Deondevemafuncionalidadenoprimeiroprompt?Emoutraspalavras,oquedevoinstalarnoOSX/Zshparaqueissoaconteça?

Algumascoisasqueeutentei:

  • EujádescarteiquesejaogitdoOh-my-Zshfazendoisso,porquequandoeudesabilitoissonoWindows/Cygwin,euaindareceboamesmaconclusão.
  • TudooqueprecisofazernoWindows,começandocom.zshrcvazioparaqueessaconclusãofuncione,éexecutarautoload-Ucompinit&&compinit
  • Eutenteiadicionarfpath=(/usr/local/share/zsh/site-functions/$fpath)aomeu.zshrcnaesperançadequeelepegasseoHomebrewinstalado(comomencionadonobrewinfogitoutput),masissonãomudounada.
  • Eutenteiinstalarzsh-completionsdoHomebrew,adicionandofpath=(/usr/local/share/zsh-completions$fpath)aomeu.zshrccomosugerido.Aindasemmudanças.
  • OquemaismeconfundeéquerecentementeeuuseiumMacBookdeumcolegaquenãosabiamuitosobreoGit.EletinhaapenasGitinstalado.Eleobteveamesmaconclusãoestendidasemterconfiguradonada.
  • Meu.zcompdump,seissoajudar: link
  • Meu .zshrc : link

Mais alguma saída de depuração do OS X, quando eu digito git , então Ctrl-X e, em seguida, h :

tags in context :completion::complete:git::
    argument-1 options  (_arguments __git_zsh_main _git)
    use-compctl         (_default _git)
    globbed-files       (_files _default _git)
tags in context :completion::complete:git:argument-1:
    alias-commands common-commands all-commands  (__git_zsh_main _git)
    alias-commands                               (__git_zsh_cmd_alias __git_zsh_main _git)
    common-commands                              (__git_zsh_cmd_common __git_zsh_main _git)
    all-commands                                 (__git_zsh_cmd_all __git_zsh_main _git)

Considerando que quando faço o mesmo no Windows / Cygwin, obtenho:

tags in context :completion::complete:git::
    argument-1 options  (_arguments _git)
tags in context :completion::complete:git:argument-1:
    aliases main-porcelain-commands user-commands third-party-commands ancillary-manipulator-commands ancillary-interrogator-commands interaction-commands plumbing-manipulator-commands plumbing-interrogator-commands plumbing-sync-commands plumbing-sync-helper-commands plumbing-internal-helper-commands  (_git_commands _git)

Saída de ls -l ${^fpath}/_git

ls: /Users/werner/.oh-my-zsh/completions/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/functions/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/brew/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/docker-compose/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/docker/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/gem/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/git-extras/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/git-flow/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/git/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/github/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/osx/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/python/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/rails/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/ruby/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/svn/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/vagrant/_git: No such file or directory
ls: /Users/werner/.oh-my-zsh/plugins/virtualenv/_git: No such file or directory
ls: /usr/local/share/zsh-completions/_git: No such file or directory
-rw-r--r--  1 werner  admin  336270 Dec 21 19:42 /usr/local/Cellar/zsh/5.3.1/share/zsh/functions/_git
lrwxr-xr-x  1 werner  admin      56 May 18 17:26 /usr/local/share/zsh/site-functions/_git -> ../../../Cellar/git/2.13.0/share/zsh/site-functions/_git
lrwxr-xr-x  1 werner  admin      56 May 18 17:26 /usr/local/share/zsh/site-functions/_git -> ../../../Cellar/git/2.13.0/share/zsh/site-functions/_git
lrwxr-xr-x  1 werner  admin      56 May 18 17:26 /usr/local/share/zsh/site-functions/_git -> ../../../Cellar/git/2.13.0/share/zsh/site-functions/_git
    
por slhck 18.05.2017 / 17:09

1 resposta

0

Não sei exatamente o que estava errado, mas eis o que fiz para resolver o problema:

Primeiro, abra o Terminal e inicie o Bash ( /bin/bash ) e, em seguida:

brew uninstall zsh
rm -rf /usr/local/share/zsh/site-functions
brew install zsh

Aparentemente, a reinstalação do Git fará com que o mesmo problema ocorra novamente:

brew reinstall git

Depois de fazer isso, a conclusão está de volta à sua forma reduzida. Se for esse o caso, você pode remover as conclusões do Git instaladas pelo Homebrew:

rm /usr/local/share/zsh/site-functions/git-completion.bash
rm -rf /usr/local/share/zsh/site-functions/_git

Isso fará com que as conclusões estendidas sejam exibidas novamente.

    
por 18.05.2017 / 20:41