Завершение вкладки Git перестало работать на удаленных ветках

Я обновил git до последней версии (2.29.0) и использую ZSH 5.8.

Я имел обыкновение переключаться между ветвями с помощью git checkout remote_br<tab>, чтобы быстро переключаться между ветвями, даже если ветка является только удаленным банкоматом. Я видел, что git внес много изменений в отношении переключения / проверки в последнее время, дело в том, что мое автозаполнение в удаленных ветках не больше не работает (с кассой или переключателем).

Я попытался добавить последнюю версию contrib/completion/git-completion.zsh в свой zsh, но проблема не исчезла. Я что-то упустил?


person RobinFrcd    schedule 07.09.2020    source источник
comment
Как вы видели, над сценариями завершения произошла небольшая волна действий, связанных с выполнением команды switch и так далее. Я помню, что было несколько изменений, чтобы сделать завершение DWIM необязательным. Похоже, у тебя он выключен. На самом деле я не использую эту функцию и не помню, каковы настройки включения / выключения.   -  person torek    schedule 08.09.2020
comment
Обратите внимание, что когда вы запускаете git fetch и выбираете новое имя удаленного отслеживания, такое как origin/xyz-feature, у вас вообще нет (локального) имени ветки xyz-feature. Команда switch или checkout создаст ваш xyz-feature из origin/xyz-feature по запросу, и Git называет это DWIM проверки (Do What I Mean).   -  person torek    schedule 08.09.2020
comment
Причина, по которой это необязательное действие, заключается в том, что в некоторых репозиториях есть сотни ветвей с одинаковыми названиями, так что если вы выполняете использование завершения и, например, имеете одну локальную ветвь с именем sanity, но в вашем восходящем потоке есть 78 ветвей, чьи все имена начинаются с s, вы не можете просто набрать s<tab>. Отключив завершение в стиле DWIM, вы можете просто набрать s<tab>. Но в вашем случае вы хотите, чтобы он был включен. В любом случае это может быть полезным советом при просмотре сценариев завершения.   -  person torek    schedule 08.09.2020
comment
Я прочитал все последние журналы изменений, ничего не вижу. Когда я смотрю на коммиты, я думаю, что это может быть связано с чем-то вроде: github.com/git/git / commit /, но я не вижу проблемы. Я проверил __git_checkout_default_dwim_mode, который возвращает --dwim, как ожидалось.   -  person RobinFrcd    schedule 08.09.2020
comment
Любое решение проблемы? Я понизил версию до 2.27.0, но это меня не удовлетворило.   -  person Helden    schedule 04.10.2020
comment
Нет, все еще застрял, тоже пришлось перейти на более раннюю версию.   -  person RobinFrcd    schedule 04.10.2020
comment
начиная с git версии 2.30.0 (выпущенной 2020-12-27), похоже, это исправлено. Я обновился, и он у меня работает правильно в zsh.   -  person rocksteady    schedule 30.12.2020


Ответы (2)


Попробуйте следующий патч:

--- a/git-completion.zsh
+++ b/git-completion.zsh
@@ -97,6 +97,11 @@ __gitcomp_direct ()
        compadd -Q -S '' -- ${(f)1} && _ret=0
 }
 
+__gitcomp_direct_append ()
+{
+       __gitcomp_direct "$@"
+}
+
 __gitcomp_nl ()
 {
        emulate -L zsh

В общем случае лучше сообщать об ошибках в список рассылки git, однако я Я поддерживаю код zsh, который в моей вилке более актуален: git-Completion < / а>.

person FelipeC    schedule 24.10.2020

Я изучал это последние несколько часов и выявил регресс.

Регрессия происходит в 6880779.

Чтобы временно решить эту проблему: замените свой git-completion.bash файл (мой находится в /usr/local/share/zsh/site-functions/git-completion.bash) на https://github.com/git/git/blob/688077910bdfbd502cb59c9c48a2af2c97d8b67b%7E1/contrib/completion/git-completion.blob

Чтобы действительно решить эту проблему, проголосуйте за мой git PR и помогите объединить его! (https://github.com/git/git/pull/902)

person Max Coplan    schedule 17.10.2020
comment
Как и @FelipeC, он работает в локальных ветках, но не в удаленных. Пока ветка не была получена, автозаполнение у меня не работает: / - person RobinFrcd; 26.10.2020
comment
Версия, которую я разместил здесь, работает для удаленных веток - person Max Coplan; 26.10.2020
comment
Или еще лучше: просто используйте встроенное в Zsh завершение Git. Он намного лучше, чем тот, который поставляется с Git. - person Marlon Richert; 27.10.2020
comment
Этот патч уже отправлен в ML и уже поставлен в очередь. Не нужно отправлять пиар. lore.kernel.org/git/ - person FelipeC; 05.11.2020