请注意,在 Git 2.30(2021 年第一季度)中,zsh 的命令行完成说明(在 contrib/ 中)已更新。
参见Alexey (ogonkov)commit 3ebd945(2020 年 7 月 2 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit bbdbe08,2020 年 11 月 2 日)
签字人:Alexey
审核人:Stefan Haller
- 修复完成配置中的错误脚本。 zsh 在这里想要 bash 完成路径,而不是自身的路径。
- 添加
compinit自动加载命令,因为如果不加载,整个事情就不起作用了。
所以命令是:
# The recommended way to install this script is to make a copy of it in
# ~/.zsh/ directory as ~/.zsh/git-completion.zsh and then add the following
# to your ~/.zshrc file:
#
# fpath=(~/.zsh $fpath)
# autoload -Uz compinit && compinit
警告:在 Git 2.30(2021 年第一季度)中,Zsh 自动完成功能(contrib/)已被修补,正如其作者“Felipe Contreras”所提到的in here。
见commit af806a2,commit 441ecda,commit 8030684,commit 5a364d2,commit 35a4170,commit bbd7f45,commit 2769e56,commit 9d76052,commit 9a397ea,commit cf6ce01,commit 5d64fb2,@987654338 @,commit 35e29fb,commit ecaf798,commit 2f459b0,commit 94b2901,commit a7804a1,commit 3791968,commit aa1f1f8,commit 162f1a5,commit bed6356,commit 81f717b,commit 81f717b,commit 81f717b,@9876 2020 年 10 月 27 日)和commit 44b37ab、commit cb9dcbd、commit 2c7cdc5、commit 5eb25bc、commit 4ce2b51(2020 年 10 月 24 日)Felipe Contreras (felipec)。
(由Junio C Hamano -- gitster -- 在@98765435 中合并@,2020 年 11 月 9 日)
签字人:Felipe Contreras
它已经被弃用了八年多,它从来没有更新过,而且维护起来很麻烦。
是时候继续前进了。
在 Git 2.30(2021 年第一季度)中,有一个针对最近损坏的修补程序。
参见commit 0764964(2020 年 12 月 5 日)和 commit c5dd0c8(2020 年 11 月 30 日)Felipe Contreras (felipec)。
(由 Junio C Hamano -- gitster -- 合并到 commit 7d92da3,2020 年 12 月 8 日) sup>
抄送:SZEDER Gábor签字人:Felipe Contreras签字人:Junio C Hamano
很久以前,在引入 _git_complete 助手时,_gitk 被 __gitk_main 替换,并且指向 __git_wrap_main_gitk 的向后兼容占位符被保留。
当调用“__git_complete gitk __gitk_main”时,创建了__git_wrap__gitk_main 助手,它基本上就是“__git_func_wrap __gitk_main”加上complete 选项。
不幸的是,commit b0a4b2d257(“completion:添加对向后兼容性的支持”,2012-05-19,Git v1.7.11-rc0 -- merge)错过了对 _gitk 的调用的先前实例在_git_gitk
所以,基本上我们有__git_wrap__git_main -> __git_func_wrap __git_main -> __git_complete_command gitk -> _git_gitk -> _gitk -> __git_wrap__gitk_main -> __git_func_wrap __gitk_main -> __gitk_main。
从来没有必要打电话给__git_func_wrap 两次。
由于_git_gitk总是在包装器内部调用,所以它可以直接调用__gitk_main。
然后,在commit 441ecdab37 ("completion: bash: remove old compat wrappers", 2020-10-27, Git v2.30.0 -- merge 在batch #4 中列出) _gitk 被删除,这会触发以下错误:
_git_gitk:9: command not found: _gitk
让我们调用正确的函数:__gitk_main。
使用 Git 2.34(2021 年第四季度),更新到 tcsh 的命令行补全(在 contrib/ 中)。
参见Takashi Iwai (tiwai) 的commit ff7b83f(2021 年 8 月 18 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit 4c3bddb,2021 年 9 月 3 日)
签字人:岩井隆史
在 bash 补全中清理旧的兼容包装器导致 tcsh 补全仍然使用它们。
让我们更新 tcsh 调用站点以解决它。
修复:441ecda (completion: bash: remove old compat wrappers, 2020-10-27, Git v2.30.0-rc0 -- merge 在batch #4 中列出) ("completion: bash: remove旧的兼容包装器")