Mercurial: como mostrar ramificações no preenchimento automático

3

É possível atualizar para uma tag ou ramificação específica com o comando hg update <branch-or-tag> . No entanto, a conclusão interna mostra apenas tags (não ramificações). Então, quando digito hg update e clico em tab, recebo uma lista de tags, mas não ramificações. É possível adicionar ramificações a essa lista?

Ou isso pode até ser um bug no Mercurial?

Estou usando zsh e oh-my-zsh com o Mercurial instalado via Homebrew.

    
por Patrick Oscity 16.01.2013 / 13:25

4 respostas

3

O código atual de _hg (Zsh 5.0.2) só é concluído com tags:

uma breve olhada na fonte de _hg (a função de conclusão do mercurial) mostra que a conclusão de hq update (implementada pela função _hg_cmd_update realmente retorna apenas revisões e tags:

_hg_cmd_update() {
  _arguments -s -w : $_hg_global_opts \
  '(--clean -C)'{-C,--clean}'[overwrite locally modified files]' \
  '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \
  ':revision:_hg_tags'
}

Localização: acho que o mais fácil seria chamar locate _hq , mas normalmente eu esperaria que a função estivesse em /usr/share/zsh/5.0.2/functions . A subpasta exata pode mudar devido às opções de instalação. O mais seguro é fazer o download da tarball 5.0.2 e olhar para zsh-5.0.2/Completion/Unix/Command/_hg

    
por 17.01.2013 / 13:09
1

Eu tive o mesmo problema com o padrão do Ubuntu 16.04 zsh 5.1.1 .

Para contornar isso, eu fiz o patch manualmente de /usr/share/zsh/functions/Completion/Unix/_hg

Substituindo a função _hg_tags() por

_hg_tags() {
  local expl
  typeset -a hglabels
  hglabels=( ${(f)"$(_hg_cmd debugnamecomplete -q 2>/dev/null)"} )
  _wanted labels expl 'labels' compadd -a - hglabels
}

edit: Vale a pena mencionar que estou usando Mercurial (version 3.7.3) como debugnamecomplete não está em todas as versões do mercurial. Você pode testar facilmente se a versão que você está usando o suporta pelo tipo hg debugnamecomplete . Se não for suportado, apenas atualize o mercurial.

    
por 21.03.2017 / 04:17
1

Eu resolvi o problema hg up ramificações no autocomplete reescrevendo a função _hg_tags () com o seguinte:

_hg_tags() {
  typeset -a tags
  local tag rev

  _hg_cmd tags 2> /dev/null | while read tag
  do
    tags+=(${tag/ #    [0-9]#:*})
  done
  _hg_cmd branches 2> /dev/null | while read tag
  do
    tags+=(${tag/ #    [0-9]#:*})
  done
  (( $#tags )) && _describe -t tags 'tags' tags
}
    
por 26.01.2018 / 11:55
0

A versão do script de conclusão de guias do Mercurial que acompanha o zsh está um pouco desatualizada (não suporta marcadores ou ramificações). Há uma versão mais atualizada na fonte mercurial. homebrew não parece instalar este script, então achei que o melhor é baixar o mercurial source e adicionar o script zsh_completion ao zsh fpath.

    
por 11.05.2013 / 20:36