扩展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-extensionman 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?