如何通过VSCode扩展API获取现有的SourceControl?

时间:2019-06-14 06:32:46

标签: visual-studio-code version-control

VSCode扩展API提供了a means of creating a new SourceControl。有什么方法可以为WorkspaceFolder请求一个现有的SourceControl吗?我希望能够从扩展中了解scm文件的状态,而不必重新创建现有的版本控制插件;相反,我想问问现有的插件。

1 个答案:

答案 0 :(得分:0)

很晚才回答,因为我前一阵子有同样的问题,我想我应该分享我的发现。

当时,我正在尝试构建一个扩展程序来获取在编辑器中打开的当前文件的远程 URL,因此经过一番研究后,我使用了默认的 Git integration for VSCode,因为文档并没有使这很很容易找到。

以下是如何使用它提取有关当前存储库的信息的小片段:

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

const repository = git.getRepository('current-workspace-path');
const { remotes, HEAD } = repository.state;
for (const remote of remotes) {
  const { fetchUrl } = remote;
}

您可以使用工作区获取当前工作区路径(不过可能有更好的方法):

const workspaceRootUris = vscode.window.workspaceFolders.map(ws => ws.uri);