如何在Visual Studio代码中访问git的api

sre*_*vas 6 visual-studio-code vscode-extensions

我想在我的扩展程序中使用vscode git api来执行git clone和其他任务。可以从vscode api访问吗?代码在这里.. api

Nis*_*ant 11

在 vscode 扩展中使用 git api 的示例代码:

const gitExtension = vscode.extensions.getExtension('vscode.git').exports;
const api = gitExtension.getAPI(1);

const repo = api.repositories[0];
const head = repo.state.HEAD;

// Get the branch and commit 
const {commit,name: branch} = head;

// Get head of any other branch
const mainBranch = 'master'
const branchDetails = await repo.getBranch(mainBranch);

// Get last merge commit
const lastMergeCommit = await repo.getMergeBase(branch, mainBranch);

const status = await repo.status();

console.log({ branch, commit, lastMergeCommit, needsSync: lastMergeCommit !== commit });
Run Code Online (Sandbox Code Playgroud)

您还必须更新 package.json 中的扩展依赖项:

"extensionDependencies": [
    "vscode.git"
  ]
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,我决定使用 simple-git npm 模块而不是依赖 git 扩展。 (2认同)

bat*_*jko 8

推特来救援!我在那里询问并指出这里的 API 定义:https : //github.com/Microsoft/vscode/blob/master/extensions/git/src/api/git.d.ts

...这里有一个例子:https : //github.com/Microsoft/vscode-pull-request-github/blob/master/src/extension.ts#L53

// Import the git.d.ts file
import { API as GitAPI, GitExtension, APIState } from './typings/git'; 

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

const rootPath = vscode.workspace.rootPath;
const repository = api.repositories.filter(r => isDescendant(r.rootUri.fsPath, rootPath))[0];
Run Code Online (Sandbox Code Playgroud)

  • 您能澄清一下这段代码吗?这很令人困惑,但是,我尝试过但无处可去...... (2认同)