我想知道是否有一种简单的方法来扩展Git命令.
所以我可以创建如下命令:
git my-custom-made-extension --my-options <my-other-arguments>
Run Code Online (Sandbox Code Playgroud)
在一个完美的世界里,我可以用它喜欢的任何语言来完成它,并且我能够相当容易地将我定制的扩展添加到任何开发环境中.
比方说,像Vim 插件的支持?
Eri*_*ric 29
正如你在源代码中看到的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-
.
Vin*_* B. 13
环顾四周,有很多项目扩展了Git命令行:
git-wtf
(用Ruby编写)使用brew或手动安装来放置可执行文件/usr/bin
(或者是/usr/local
吗?).似乎Git有一种机制,它知道当你编写git wtf
它时实际上是在寻找PATH中的任何脚本命名git-wtf
.git-annex
(用haskell编写)有更复杂的味道.但即使它使用Cabal进行安装(并且如果你没有它也有很长的依赖关系列表),它似乎使用与git-wtf相同的基本原理.(Git会在你写的时在可执行文件路径中找到它git annex
)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]
...
Run Code Online (Sandbox Code Playgroud)
我没有在git-annex上尝试它,所以他们可能已经解决了这个问题,但是git-flow和git-wtf遵循这个行为.
编辑:git help
回退到手册页,所以这一点是无关的(Thx Eric).
Brew,macports和apt-get的安装非常棒.但是没有全球公认的向Git添加功能的方法.更具体地说,您没有平台独立的方式来安装"插件".也许make
可以做到这一点,但即使这样你也必须自己编写安装脚本.
归档时间: |
|
查看次数: |
5368 次 |
最近记录: |