如何使用Azure DevOps REST Api从Git存储库下载分支中的文件?

mar*_*ark 4 git azure-devops

对于master分支中的文件,我可以使用以下URL- http://tfsserver:8080/tfs/DefaultCollection/TFSProject/_apis/git/repositories/GitRepo/items?path=FilePath&api-version=4.1

但是,如果我需要从分支机构下载文件怎么办?

聚苯乙烯

我完全知道我可以克隆git存储库。我特别需要REST API。

编辑1

因此,我尝试了以下代码:

$Url = "http://tfsserver:8080/tfs/DefaultCollection/code/_apis/git/repositories/xyz/itemsbatch?api-version=4.1"
$Body = @"
{
    "itemDescriptors": [
    {
        "path": "/Bootstrap.ps1",
        "version": "shelve/vsts",
        "versionType": "branch"
    }]
}
"@
Invoke-RestMethod -UseDefaultCredentials -Uri $Url -OutFile $PSScriptRoot\AutomationBootstrapImpl.ps1 -Method Post -ContentType "application/json" -Body $Body
Run Code Online (Sandbox Code Playgroud)

它成功,但是生成的文件与我期望的不完全相同:

{"count":1,"value":[[{"objectId":"ceb9d83e971abdd3326d67e25b20c2cb1b4943e2","gitObjectType":"blob","commitId":"d4a039914002613e775f6274aee6489b244a42a7","path":"/bootstrap.ps1","url":"http://tfsserver:8080/tfs/DefaultCollection/code/_apis/git/repositories/xyz/items/bootstrap.ps1?versionType=Branch&version=shelve%2Fvsts&versionOptions=None"}]]}
Run Code Online (Sandbox Code Playgroud)

但是,它提供了可用于从分支获取文件的URL- http://tfsserver:8080/tfs/DefaultCollection/code/_apis/git/repositories/xyz/items/bootstrap.ps1?versionType=Branch&version=shelve%2Fvsts&versionOptions=None

所以,我们开始:

$Url = "http://tfsserver:8080/tfs/DefaultCollection/code/_apis/git/repositories/xyz/items/bootstrap.ps1?versionType=Branch&version=shelve/vsts"
Invoke-RestMethod -UseDefaultCredentials -Uri $Url -OutFile $PSScriptRoot\AutomationBootstrapImpl.ps1
Run Code Online (Sandbox Code Playgroud)

它按预期工作。但是我仍然不知道此API方法的名称是什么?

Von*_*onC 6

GetItems批量API不包括versionType类型GitVersionType

版本类型(分支,标记或提交)。确定如何解释ID

因此,如果将以下属性添加到R​​EST API URL:

?versionType=Branch&version=myBranch
Run Code Online (Sandbox Code Playgroud)

这应该足以从特定分支获取项目

如OP所述,它提供了一个指向以下内容的中间URL:

http://tfsserver:8080/tfs/{organization}/{project}/_apis/git/repositories/{repositoryId}/items/{path}?versionType=Branch&version=myBranch
Run Code Online (Sandbox Code Playgroud)

这意味着: