全部, 我试图使用REST API获取TFS GIT中特定仓库中所有文件的列表。 我找到了下面的一个,但它只显示" scopePath = / buld.xml"之后提到的特定文件名的内容,它只显示文件build.xml的内容。
但我正在尝试,只是列出特定存储库中的所有文件而不提及特定的文件名。
请帮帮我。
的https:// {帐户名} .visualstudio.com / {项目} / _apis / GIT中/库/ {repositoryId} /items?items?scopePath=/&api-version=4.1
答案 0 :(得分:5)
您可以使用以下api:
https://{accountName}.visualstudio.com/{project}/_apis/git/repositories/{repositoryId}/items?recursionLevel=Full&api-version=4.1
答案 1 :(得分:1)
还可以使用VisualStudioOnline库(在撰写本文时成为AzureDevOps)来实现:Microsoft.TeamFoundationServer.Client,Microsoft.VisualStudio.Services.Client。
首先,您需要创建access token。然后只需使用以下代码:
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);
内部使用REST API。因此,如果您使用c#lang尝试相同的效果,最好将其委托给lib。
答案 2 :(得分:0)
您需要先调用items端点,这会给您一个objectId(gitObjectType应该为“ tree”):
http://{tfsURL}/tfs/{collectionId}/{teamProjectId}/_apis/git/repositories/{repositoryId}/items?recursionLevel=Full&api-version=4.1
然后调用树的端点以列出树中的对象:
http://{tfsURL}/tfs/{collectionId}/{teamProjectId}/_apis/git/repositories/{repositoryId}/trees/{objectId}?api-version=4.1
测试