为别名命令添加'git help'的功能?

10

我已经实现了一个Git命令,并使用git别名将其挂接到Git上,但是有没有一种方法来挂接Git帮助文档呢? 我正在Windows上运行,如果我输入git help mycmd,会弹出一个窗口告诉我Git找不到git-mycmnd.html文件。

我使用Python实现了我的命令,那么有没有一种适当的Git方式来添加帮助文档,而不是“只知道”帮助文件必须放在哪里呢?


1
我刚刚测试了一个别名为 hello 的命令,它运行的是 git show HEAD。当我输入 git help hello 时,返回的结果是 'hello' 被设为 'show HEAD' 的别名 - evolutionxbox
请查看 help.formathelp.htmlpath 的文档 这里。运行命令 git config --local help.htmlpath "http://www.google.com",然后输入 git help love,这将为您提供一个开始的方向。 - William Kinaan
希望有人能帮忙弄清楚这个在一般情况下如何运作,通过修改Git的文件来实现,而不是手动保持Git仓库与当前安装的Git版本同步。 - undefined
2个回答

5

您可以为自定义别名编写文档,这些文档可以本地保存或通过网络在线访问。以下是其工作原理:

第一步:设置帮助格式

git config --local help.format html

第二步:克隆官方存储库文档

cd ~/Documents

git clone git://git.kernel.org/pub/scm/git/git-htmldocs.git git-doc

第三步:添加一个包含命令文档的简单HTML页面

假设你的命令是love,那么:

cd ~/Documents/git-doc
touch gitlove.html 
Add some text to the gitlove.html

第四步:配置您的资料库以链接到文档资料库

cd YOUR_PROJECT_REPO
git config --local help.htmlpath ~/Documents/git-doc

现在你可以使用git help love,然后你的HTML页面将弹出。
享受吧!

谢谢 William。为了别名命令而付出这么多的努力真的很不易 :-(。 - Paul D Smith
@PaulDSmith 其实并不需要太多工作,你只需要克隆一个仓库并将你的 HTML 页面添加到其中即可!如果你已经将 HTML 托管在某个地方,那就更好了,你只需要指向你的域名即可,就这样! - William Kinaan
2
对我来说,我同意。但作为向许多人推出有用的git扩展的一种方式,我可以通过“pip install this then run this git alias command”来解决问题,但我不能要求人们像这样开始操纵Git文档。我的“完美”解决方案将是某种“帮助别名”,可能是基于别名工作的,它可以传递“help”和格式(man、html等),并让我编写脚本来完成其余部分。 - Paul D Smith

1
希望有人能帮忙解决这个问题,通过修改Git的文件来实现,而不是手动与当前安装的Git版本保持同步的方式。
之前提供的方法需要克隆官方的Git文档存储库,并手动保持同步,这可能会很麻烦。
据我所了解:
- `git help love` → `man git-love`:如果存在,显示git-love的man页面,例如`/usr/local/share/man/man1/git-love.1`。 - `git love --help` → `git-love --help`:使用`--help`标志执行`git-love`脚本。
为了获得与已安装的Git版本直接集成的更简化的解决方案,您可以考虑以下方法,而不是创建别名:
  • 创建一个脚本(例如git-love)并将其放置在系统的PATH路径下的一个目录中。
    该脚本可以用Python编写,正如你所提到的,你已经使用Python实现了你的命令。

  • 为你的git-love脚本创建一个man页。将其命名为git-love.1并将其放置在存储man页的适当目录中(例如/usr/local/share/man/man1/)。man页将允许git help love命令显示你的脚本的帮助文本,因为Git的帮助系统使用man页来显示帮助文本。

import argparse
import subprocess
import sys

def main():
    parser = argparse.ArgumentParser(description='Description of your git love command.', add_help=False)
    parser.add_argument('--help', action='store_true', help='Show help message and exit')
    args, unknown_args = parser.parse_known_args()

    if args.help:
        # Display the man page
        subprocess.run(['man', 'git-love'])
    else:
        # rest of your command implementation

if __name__ == '__main__':
    main()

那样,使用add_help=False创建argparse.ArgumentParser,以防止argparse自动处理--help标志。 向解析器添加自定义的--help参数。如果提供了--help作为参数,则使用subprocess.run函数执行man git-love命令,显示git-love.1手册页。 否则,将运行您的命令实现的其余部分。

挺不错的主意。我猜我也可以加一些东西,可以在Windows上打开本地的HTML文件 :-). - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接