如何使用RESTAPI列出TFS GIT repo中的所有文件

如何使用RESTAPI列出TFS GIT repo中的所有文件,tfs,azure-devops,tfsbuild,tfs-sdk,azure-devops-rest-api,Tfs,Azure Devops,Tfsbuild,Tfs Sdk,Azure Devops Rest Api,全部,, 我正在尝试使用RESTAPI获取TFS GIT中特定repo中的所有文件的列表。 我找到了下面的一个,但它只显示“scopePath=/buld.xml”后面提到的特定文件名的内容,它只显示build.xml文件的内容 但我正在尝试,只是列出了特定存储库中的所有文件,而没有提到特定的文件名 请帮帮我 https://{accountName}.visualstudio.com/{project}/_api/git/repositories/{repositoryId}/items?it

全部,, 我正在尝试使用RESTAPI获取TFS GIT中特定repo中的所有文件的列表。 我找到了下面的一个,但它只显示“scopePath=/buld.xml”后面提到的特定文件名的内容,它只显示build.xml文件的内容

但我正在尝试,只是列出了特定存储库中的所有文件,而没有提到特定的文件名

请帮帮我


https://{accountName}.visualstudio.com/{project}/_api/git/repositories/{repositoryId}/items?items?scopePath=/&api version=4.1

您可以使用以下api:

https://{accountName}.visualstudio.com/{project}/_apis/git/repositories/{repositoryId}/items?recursionLevel=Full&api-version=4.1

也可以使用VisualStudioOnline LIB(在撰写评论之日变成AzureDevOps)实现:Microsoft.TeamFoundationServer.Client、Microsoft.VisualStudio.Services.Client

首先,您需要创建。然后只需使用下面的代码:

VssBasicCredential credintials = new VssBasicCredential(String.Empty, "YOUR SECRET CODE HERE");
VssConnection connection = new VssConnection(new Uri("https://yourserverurl.visualstudio.com/"), credintials);
GitHttpClient client = connection.GetClient<GitHttpClient>();

List<GitRepository> repositories = await client.GetRepositoriesAsync(true); // or use GetRepositoryAsync()
var repo = repositories.FirstOrDefault(r => r.Name == "Some.Repo.Name");

GitVersionDescriptor descriptor = new GitVersionDescriptor()
{
    VersionType = GitVersionType.Branch,
    Version = "develop",
    VersionOptions = GitVersionOptions.None
};

List<GitItem> items = await client.GetItemsAsync(repo.Id, scopePath: "/", recursionLevel: VersionControlRecursionType.Full, versionDescriptor: descriptor);
VssBasicCredential credintials=新的VssBasicCredential(String.Empty,“此处为您的密码”);
VssConnection connection=新VssConnection(新Uri(“https://yourserverurl.visualstudio.com/"(小标题),;
GitHttpClient=connection.GetClient();
List repositories=wait client.getrepositorisasync(true);//或者使用GetRepositoryAsync()
var repo=repositories.FirstOrDefault(r=>r.Name==“Some.repo.Name”);
GitVersionDescriptor描述符=新的GitVersionDescriptor()
{
VersionType=GitVersionType.Branch,
Version=“开发”,
VersionOptions=GitVersionOptions.None
};
List items=wait client.GetItemsAsync(repo.Id,scopePath:“/”,recursionLevel:VersionControlRecursionType.Full,versionDescriptor:descriptor);

在引擎盖下,它正在使用RESTAPI。因此,如果您使用c#lang尝试相同的效果,最好将其委托给lib。

您需要首先调用items端点,这将为您提供一个objectId(gitObjectType应该是“tree”):

然后调用树端点以列出树中的对象:

http://{tfsURL}/tfs/{collectionId}/{teamProjectId}/_apis/git/repositories/{repositoryId}/trees/{objectId}?api-version=4.1

test

你好,Cece,我试了一个你建议的不起作用的,我使用了不同的API版本,如4.0,但仍然不起作用,你使用的是哪个版本的TFS?你犯了什么错误?我正在使用VSTS进行测试,它可以正常工作。我正在使用版本16.122.27409.2及其内部TFS,我没有收到任何错误,但我没有得到我想要的。下面是我得到的信息。“count”:1,“value”:[{“objectId”:“id”,“gitObjectType”:“tree”,“commitId”:“id”,“path”:“/,“isFolder”:true,“url”:“}]}请仔细检查是否在api中指定了正确的
项目
repositoryId
。我刚刚用TFS16.131.27701.1进行了测试,它同样有效。我添加了一个截图供您参考。谢谢@CeceDong MSFT-这确实帮了我的忙。我与OP有相同的问题-我将只看到“/”文件夹。但是如果我将文件名简单地放在URL上,我就可以获得文件(但无法列出它们),例如..../items/My_Project.sln?versionType=Branch&versionOptions=None
http://{tfsURL}/tfs/{collectionId}/{teamProjectId}/_apis/git/repositories/{repositoryId}/trees/{objectId}?api-version=4.1