是否有REST API或任何其他方式来获取VSTS中所有存储库的所有分支?

时间:2018-07-19 18:30:51

标签: git azure-devops azure-devops-rest-api

我想在我的VSTS帐户下获得所有存储库的所有分支的列表。 我可以找到https://{account}.visualstudio.com/DefaultCollection/_apis/git/repositories?api-version=1.0。但是,这不会列出我的存储库下的所有分支,而只会列出默认分支。

我在C#中有代码,

var personalaccesstoken = "TOKEN";

using (HttpClient client = new HttpClient())
{
    client.DefaultRequestHeaders.Accept.Add(
    new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
    Convert.ToBase64String(
        System.Text.ASCIIEncoding.ASCII.GetBytes(
            string.Format("{0}:{1}", "", personalaccesstoken))));

using (HttpResponseMessage response = client.GetAsync(
            "https://{account}.visualstudio.com/DefaultCollection/_apis/git/repositories?api-version=1.0").Result)
{
    response.EnsureSuccessStatusCode();
    string responseBody = await response.Content.ReadAsStringAsync();
    Console.WriteLine(responseBody);
}
Console.ReadLine();

任何人都可以指向REST API或告诉我一种将所有分支存储在存储库下的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用两个循环来获取VSTS帐户中所有git存储库的所有分支。详细步骤如下:

1。 circshift在您的VSTS帐户中

GET https://{account}.visualstudio.com/_apis/projects?api-version=4.1-preview.1

在响应中,将返回VSTS帐户中的所有项目。

2。从每个VSTS项目的步骤1和Get all the projects开始循环VSTS项目

GET https://{accountName}.visualstudio.com/{project}/_apis/git/repositories?api-version=4.1

在REST API的响应中,您可以为每个项目使用所有的git repos。

3。从步骤2循环获取git仓库,并获取每个git仓库的所有分支

您可以使用get all the git repos REST API来获取每个git repo的所有分支:

GET https://{accountName}.visualstudio.com/{project}/_apis/git/repositories/{repositoryId}/refs?api-version=4.1

执行完所有循环后,您将获得所有git repos的所有分支。

答案 1 :(得分:0)

使用Repositories - List,您可以获得VSTS帐户中所有回购的列表。

鉴于该列表,您可以使用Refs - List遍历所有存储库,这样您就应该能够获取所有引用以及分支上的信息。

要获取所有存储库的所有分支的全局API调用也将很困难-分支名称(引用)在不同存储库中可能是相同的。所有分支的一个经典候选者是master分支。