VS Code Git 扩展 API

Posted

技术标签:

【中文标题】VS Code Git 扩展 API【英文标题】:VS Code Git Extension API 【发布时间】:2020-04-13 23:12:06 【问题描述】:

是否有更多关于如何创建使用 Git 扩展 API 的扩展的文档?

在https://github.com/microsoft/vscode/blob/master/extensions/git/README.md,微软提供的唯一文档是:

Visual Studio Code 的 Git 集成

注意:此扩展与 Visual Studio Code 捆绑在一起。可以禁用但不能卸载。

特点

请参阅Git support in VS Code 了解此扩展程序的功能。

API

Git 扩展公开了一个 API,任何其他扩展都可以访问。

    src/api/git.d.ts 复制到您的扩展程序的来源; 在扩展的编译中包含 git.d.ts

    使用以下 sn-p 获取 API:

    const gitExtension = vscode.extensions.getExtension<GitExtension>('vscode.git').exports;
    const git = gitExtension.getAPI(1);
    

它确实没有帮助,当我尝试使用这 2 行时,扩展运行,但如果我尝试检查,例如,git.repositories[0],它返回未定义。如果我做错了什么? :(

【问题讨论】:

【参考方案1】:

你可以看看eamodio/vscode-gitlens,基于Git扩展的主扩展。

它的src/git/gitService.ts 确实调用了 GIt 扩展:

static async getBuiltInGitApi(): Promise<BuiltInGitApi | undefined> 
    try 
        const extension = extensions.getExtension('vscode.git') as Extension<GitExtension>;
        if (extension !== undefined) 
            const gitExtension = extension.isActive ? extension.exports : await extension.activate();

            return gitExtension.getAPI(1);
        
     catch 

    return undefined;

【讨论】:

【参考方案2】:

为了进一步补充现有答案,以及那些不使用 TypeScript 而是使用原始 javascript 编码的人:

gitExtension.getAPI(1) 的调用将为您提供API 的实例,该实例仅对其.repositories 成员有用。该成员是Repository 实例的数组,每个工作区存储库都有一个。在这种情况下,您可以执行所有 git 操作。

然而,我必须承认这个 API 的文档仍然很差,因为大多数函数都接受字符串,如果你不熟悉 git 语言,它们应该是什么并不总是很明显。我最终使用了simple-git 节点模块。它有适当的文档,可以更快地实现您想要的功能,而不会在这里浪费太多时间。

【讨论】:

以上是关于VS Code Git 扩展 API的主要内容,如果未能解决你的问题,请参考以下文章

7 个不容错过的 VS Code 扩展

[VS 2019的VS Code的c#代码配色方案扩展

2021年了,Python开发者不容错过的7个VS Code扩展

Python开发者不容错过的7个VS Code扩展

终端 Git 跟踪与 VS Code git 跟踪不同步

ubuntu18.04系统安装及php7.2,apache2,mysql8,git,svn,composer,vs code 到安装 php 扩展配置php.ini 实现 laravel5.8 运行(