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

时间:2018-02-23 12:24:19

标签: node.js git typescript azure-devops azure-devops-rest-api

我一直在使用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没有分支参数,而Query接口也没有,所以我对如何执行此操作感到有点困惑。

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

2 个答案:

答案 0 :(得分:1)

目前,获取分支的提交不适用于vsts-node-api。您还可以跟进问题Enable to get commits of a branch

现在有两种解决方法:

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

答案 1 :(得分:1)

对不起,这很老了,但这似乎对我有用:

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