Это ошибка!
git-completion.bash
делает пройдите через псевдонимы git, подключив каждый к нужной функции завершения.
Но затем четыре из них - функции для git push
, fetch
, pull
и remote
- делегируют __git_complete_remote_or_refspec()
, который начинается так:
__git_complete_remote_or_refspec ()
{
local cur_="$cur" cmd="${words[1]}"
...
$words
- это просто список токенов из командной строки, и несколькими строками ниже он начинает проверку $cmd
без раскрытия псевдонимов, например:
case "$cmd" in
fetch)
# ...
pull|remote)
# ...
Насколько я могу судить, Габор Седер впервые сообщил об этом два года назад в ветка о том, как завершить работу с псевдонимами оболочки.
Он снова упомянул об этом в 2012 году в ответ на патч от Фелипе Контрераса (@ фелипек). В прошлом месяце Фелипе объявил о своем форк git, в котором есть отдельный патч для этого: _ 11_.
Я не знаю, было ли это отправлено в апстрим, но пока ... если вы хотите проверить это, примените патч к своему git-completion.bash
:
curl https://github.com/felipec/git/commit/b7b6be72d60d.diff |
patch -d [directory containing git-completion.bash]
# useful options for patch: --verbose --dry-run
Если вы не знаете, где сейчас живет git-completion.bash
, попробуйте declare -F
:
dirname "$(shopt -s extdebug; declare -F __git_complete | awk '{ print $3 }')"
(После исправления git-completion.bash
вам будет предложено указать местоположение git-completion.zsh
для применения второго фрагмента ... вы можете просто нажать ^C
, чтобы пропустить его.)
03.12.2013
git-completion.sh
, вероятно, проще простоcat .bashrc
или что-то подобное :) В любом случае, это работает, спасибо; надеюсь, что они подтолкнут его вверх по течению. 03.12.2013