VSCode 扩展 API 提供了 创建新
SourceControl
的方法。有什么办法可以为 SourceControl
索要现有的 WorkspaceFolder
吗?我希望能够从扩展中了解 scm 文件状态,而无需重新创建现有的版本控制插件;相反,我希望能够询问现有的插件。
很晚才回答,但因为我不久前也有同样的问题,所以我想我应该分享我发现的内容。
当时,我试图构建一个扩展来获取在编辑器中打开的当前文件的远程 URL,因此经过一番研究后,我使用了默认的 VSCode 的 Git 集成,因为文档并没有让这变得很容易找到。
以下是如何使用它来提取有关当前存储库的信息的一个小片段:
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);