VS Code Git 扩展 API

5

有没有地方可以获取有关如何创建使用Git扩展API的扩展的更多文档?

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

Visual Studio Code的Git集成

注意:此扩展程序已捆绑到Visual Studio Code中。可以禁用但不能卸载。

特点

要了解此扩展程序的功能,请参见Visual Studio Code中的Git支持

API

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

  1. Copy src/api/git.d.ts to your extension's sources;
  2. Include git.d.ts in your extension's compilation.
  3. Get a hold of the API with the following snippet:

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

实际上这并没有帮助,当我尝试使用这两行代码时,扩展程序会运行,但是如果我尝试检查例如git.repositories [0],它会返回未定义。我不知道我是否做错了什么? :(

2个回答

6

为进一步补充现有答案,针对那些不使用 TypeScript 而是使用原生 JavaScript 的人:

调用 gitExtension.getAPI(1) 将会给你一个 API 实例,仅有它的 .repositories 成员变量是有用的,该成员变量是 Repository 实例的数组,每个实例代表你的工作区仓库之一。你可以从这些实例中进行所有的 git 操作。

然而,我必须承认这个 API 文档还不够完善,因为大多数函数接受字符串参数,如果你不熟悉 git 语言,那么很难确定应该传入什么参数。我最终使用了 simple-git node 模块,它拥有良好的文档,并且可以更快地实现你需要的功能,而不会浪费太多时间。


6

您可以查看基于 Git 扩展的主要扩展程序 eamodio/vscode-gitlens

在其 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;
}

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