VS Code Git扩展API

时间:2019-12-22 06:38:04

标签: git github visual-studio-code api-design vscode-extensions

在某处可以获取更多有关如何使用Git Extension API创建扩展的文档吗?

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

Visual Studio Code的Git集成

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

功能

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

API

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

  1. src/api/git.d.ts复制到扩展程序的源中;
  2. 在扩展程序的编译中加入git.d.ts
  3. 使用以下代码段获取API:

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

它真的没有帮助,当我尝试使用这两行时,扩展会运行,但是如果我尝试检查,例如git.repositories [0],它将返回未定义。如果我做错了事,Idk? :(

2 个答案:

答案 0 :(得分:1)

对于现有答案,以及那些不是使用TypeScript而是使用原始JavaScript进行编码的人,

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

但是,我必须承认,由于大多数函数都接受字符串,因此该API的文档仍然很少,并且如果您不熟悉git语言,也不总是很清楚它们应该是什么。我最终使用了simple-git节点模块。它具有适当的文档,可在不浪费太多时间的情况下更快地实现所需的功能。

答案 1 :(得分:0)

您可以看看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;
}