Mercurial 有一个非常好的特性,它允许人们只在命令行上键入需要明确的内容,例如:
hg pus
用于推动,或:
hg comm
承诺。
我很想在 Git 和 Maven 中看到这个功能,这让我很好奇它是如何完成的。我对代码进行了拖网搜索,但运气不佳,我发现与 bash_completion 有关,但与 Windows 无关。
此命令完成在 Hg代码中的什么位置实现?
Mercurial 有一个非常好的特性,它允许人们只在命令行上键入需要明确的内容,例如:
hg pus
用于推动,或:
hg comm
承诺。
我很想在 Git 和 Maven 中看到这个功能,这让我很好奇它是如何完成的。我对代码进行了拖网搜索,但运气不佳,我发现与 bash_completion 有关,但与 Windows 无关。
此命令完成在 Hg代码中的什么位置实现?
为命令执行此操作的代码是mercurial.cmdutilfindpossible
中的和findcmd
函数。他们搜索已知命令并找到以您键入的内容开头的命令,因此找到该命令。hg pus
push
对于命令行选项(标志),普通的getopt 模块可以让你缩短,比如说,hg log --patch
自动hg log --pat
。
我认为它在mercurial/cmdutil.py
并且调用它的方法findpossible
。
在 linux 上,这是由bash_completion
在我的系统上,hg 的配置在/etc/bash_completion.d/mercurial