如何在不传递文件版本的情况下使用Azure DevOps REST API编辑文件



我正试图使用此处显示的示例在TFS上编辑文件的最后版本:https://learn.microsoft.com/en-us/rest/api/azure/devops/tfvc/changesets/create?view=azure-devops-rest-5.0

但是这个请求要求对文件的版本进行编辑。

有没有一种方法可以在不传递实际文件版本的情况下编辑文件的最后版本?

提前感谢

有没有一种方法可以在不传递实际文件版本的情况下编辑文件的最后版本?

根据我的测试,版本字段是必需的。

因此,当您使用Rest API编辑TFVC repo中的文件时,您需要输入最新版本。

但是您可以使用Rest API:变更集-创建来获得最新版本号

以下是PowerShell脚本示例:

$token = "PAT"
$url="https://dev.azure.com/{Organization Name}/{Project Name}/_apis/tfvc/changesets?$orderby=id des&api-version=5.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
$latestversion = $response.value.changesetId[0]
echo $latestversion
$url2="https://dev.azure.com/{Organization name}/_apis/tfvc/changesets?api-version=5.0"

$body = "{
`"changes`": [
{
`"item`": {
`"version`": `"$latestversion`",
`"path`": `"$/TFVCTEST/test.txt`",
`"contentMetadata`": {
`"encoding`": 1200,
`"contentType`": `"text/plain`"
}
},
`"changeType`": `"edit`",
`"newContent`": {
`"content`": `"Initial coassdntentssss sas of 4/9/2019 11:21:13 PMnEdited contents`"
}
}
],
`"comment`": `"(sample) Editing the file via API`"
}"
$response2 = Invoke-RestMethod -Uri $url2 -Headers @{Authorization = "Basic $token"} -Method Post -Body $body -ContentType application/json

解释:

第一个URL用于获取所有changestID,默认情况下,结果按降序排列。所以你只需要取第一个值,也就是最新的值。

然后您可以在第二个Rest API的请求主体中将the latest value设置为version来编辑文件。

顺便说一句,考虑到您正在使用TFS,您可能需要将url更改为以下内容:

变更集-获取变更集

变更集-创建

最新更新