扩展Git功能
我想知道是否有一种简单的方法来扩展Git命令。
所以我可以创建如下命令:
git my-custom-made-extension --my-options <my-other-arguments>
在一个完美的世界中,我可以用任何它满意的语言来完成它,我可以很容易地将我自定义的扩展添加到任何开发环境中。
比方说,像Vim插件的支持?
正如你可以在execv_dashed_external
的源代码中看到的execv_dashed_external
,如果你使用git-my-custom-made-extension
,那么git将会使用别名:
git my-custom-made-extension ...
→ git-my-custom-made-extension ...
git help my-custom-made-extension
→ man git-my-custom-made-extension
“扩展git”没有什么特别之处。 按照正常方式构建程序,并确保名称以git-
开头。
真实生活的例子
环顾四周,有很多扩展Git命令行的项目:
git-wtf
(用Ruby编写)使用brew或手动安装将可执行文件放入/usr/bin
(或者是/usr/local
?)。 看起来Git有一种机制,它知道当你编写git wtf
它实际上是在PATH中寻找名为git-wtf
任何脚本。 git-annex
(用haskell编写)具有更复杂的风格。 但即使它使用Cabal进行安装(如果你没有它,也会有很长的依赖关系列表),它看起来像使用与git-wtf相同的基本原理。 (当你编写git annex
Git会在可执行文件路径中找到它) git-flow
(用shell编写)使用brew / macport / apt-get / wget + bash自行安装。 而且,它似乎又一次使用了相同的机制。 解决方案(?)
所以可以编写自己的自定义脚本,然后将它放在PATH变量中列出的任何路径中。
但据我所知,有一些缺点......
已知的问题
文档
你并没有真正扩展Git,所以有些命令不起作用:
$ git help wtf
No manual entry for git-wtf
$ git wtf --help
No manual entry for git-wtf
$ git wtf -h # the only command which works...
Usage: git wtf [branch+] [options]
...
我没有在git-annex上尝试它,所以他们可能已经解决了这个问题,但git-flow和git-wtf遵循这个行为。
编辑 : git help
回退到man页面,所以这一点是无关紧要的(Thx Eric)。
安装过程
Brew,macports和apt-get的安装都很棒。 但是没有全球公认的方式为Git添加功能。 更具体地说,你没有平台独立的方式来安装你的“插件”。 也许make
会做的伎俩,但即使如此,你就必须自己写的安装脚本。
您可能想要手动或使用git config
创建别名。 手册页详细介绍了这一点。 一个非常基本的例子会是这样的:
git config --global alias.log1 "log --oneline"
链接地址: http://www.djcxy.com/p/47261.html
上一篇: Extending Git functionality
下一篇: How can I use inverse or negative wildcards when pattern matching in a unix/linux shell?