Azure DevOps客户端库-下载早期版本的存储库文件

时间:2020-04-15 03:36:13

标签: azure-devops-rest-api

我正尝试从我从Azure DevOps NuGet客户端库获取的提交记录中下载早期版本的存储库版本(.csproj文件)。我想要执行此操作,以便可以访问.csproj文件中的程序集版本信息。我用来获取文件当前版本的GetFile()函数工作正常,但我想从提交记录中下载文件的旧版本。

这是GetFile函数。

        public string GetFile(string projectName, string repoName, string fileName)
        {
            try
            {
                var items = ListItems(projectName, repoName);
                var projectPath = items.FirstOrDefault(i => i.Path.Contains(fileName))?.Path ?? "";

                GitHttpClient gitClient = GetGitHttpClient();
                GitRepository repo = GetRepositoryAsync(projectName, repoName);

                var stream = gitClient.GetItemTextAsync(repo.Id, projectPath).Result;
                var reader = new StreamReader(stream);
                return reader.ReadToEnd();
            }
            catch (Exception e)
            {
                return "";
            }
        }

此函数获取提交。

        public async Task<List<GitCommitRef>> GetCommitsAsync(string projectName, string repoName)
        {
            var client = GetGitHttpClient();
            var repo = GetRepositoryAsync(projectName, repoName);
            var gitQueryCommitsCriteria = new GitQueryCommitsCriteria();
            return await client.GetCommitsAsync(repo.Id, gitQueryCommitsCriteria);
        }

现在,我想下载与每个提交相关的.csproj的每个版本。

任何人都可以给我的帮助将不胜感激。

亲切的问候,斯图尔特

1 个答案:

答案 0 :(得分:0)

我用来获取当前版本的GetFile()函数 文件工作正常,但我想下载文件的旧版本 从提交记录中。

我认为您的方向正确。我曾经使用Azure Devops Rest Api Items-GetversionDescriptor参数的帮助下成功获取一个特定版本文件的内容。

https://dev.azure.com/MyOrgName/MyProjectName/_apis/git/repositories/MyReposName/Items?path=/README.md&versionDescriptor%5BversionOptions%5D=0&versionDescriptor%5BversionType%5D=2&versionDescriptor%5Bversion%5D={Commit ID}&download=true&resolveLfs=true&%24format=octetStream&api-version=5.0-preview.1

由于客户端库中可用的功能与 Rest Api中的功能相对应,因此客户端库必须具有相应的参数才能执行此操作。

这是我发现的东西:

gitClient.GetItemTextAsync()函数的大多数重载都以GitVersionDescriptor versionDescriptor = null作为输入,我认为这是您所需要的。

enter image description here

希望它会有所帮助。