VS Code Git 扩展 API

Rey*_*Rey 5 git api-design github visual-studio-code vscode-extensions

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

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

Visual Studio Code 的 Git 集成

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

特征

请参阅VS Code 中的 Git 支持,了解此扩展的功能。

应用程序编程接口

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);
    
    Run Code Online (Sandbox Code Playgroud)

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

Von*_*onC 6

你可以看一下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;
}
Run Code Online (Sandbox Code Playgroud)


Aur*_*bon 6

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

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

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