使用 VSTS 节点 api 查询特定分支中的所有提交

Use VSTS node api to query for all commits in a particular branch

我一直在使用 vsts-node-api 并取得了一定程度的成功。

但是我想用它来查询特定分支中的所有提交。这在 here.

的 REST api 文档中有所描述

但是节点 api 只允许您使用 GitApi

的这种方法查询存储库中的提交
getCommits(repositoryId: string, searchCriteria: GitInterfaces.GitQueryCommitsCriteria, project?: string, skip?: number, top?: number): Promise<GitInterfaces.GitCommitRef[]>;

GitInterfaces.GitQueryCommitsCriteria有这个接口

export interface GitQueryCommitsCriteria {
    $skip: number;
    $top: number;
    author: string;
    compareVersion: GitVersionDescriptor;
    excludeDeletes: boolean;
    fromCommitId: string;
    fromDate: string;
    historyMode: GitHistoryMode;
    ids: string[];
    includeLinks: boolean;
    includeWorkItems: boolean;
    itemPath: string;
    itemVersion: GitVersionDescriptor;
    toCommitId: string;
    toDate: string;
    user: string;
}

如您所见,getCommits 没有分支参数,查询接口也没有,所以我对如何执行此操作有点困惑。

为了提供一些上下文,我想要实现的是,当更新或创建 PR 时,我想检查 pr 的源分支是否包含目标分支的最新提交,以确认源分支与目标分支是最新的。

目前,vsts-node-api 无法获取分支的提交。并且你也可以跟进issue Enable to get commits of a branch.

目前有两种解决方法:

  • 解决方法 1:使用 REST 调用获取分支的提交。
  • 解决方法 2:clone/get 在本地 git 仓库,然后执行 git log branchname --oneline 以获取指定分支的提交。

抱歉,这是旧的,但这似乎对我有用:

var criteria = new GitQueryCommitsCriteria()
{
    HistoryMode = GitHistoryMode.FirstParent,
    ItemVersion = new GitVersionDescriptor
    {
        Version = m_branch.Name,
        VersionType = GitVersionType.Branch,
        VersionOptions = GitVersionOptions.FirstParent
    }
};