如何在不传递文件版本的情况下使用 Azure DevOps REST API 编辑文件
How to edit a file using Azure DevOps REST API without passing the file version
我正在尝试使用此处显示的示例在 TFS 上编辑文件的最新版本:
https://docs.microsoft.com/en-us/rest/api/azure/devops/tfvc/changesets/create?view=azure-devops-rest-5.0
但是这个请求要求编辑文件的版本。
有没有办法在不传递实际文件版本的情况下编辑文件的最新版本?
提前致谢,
Is there a way to edit a file's last version without passing the actual file version?
根据我的测试,版本字段是必需的。
所以当您使用 Rest API 编辑 TFVC 仓库中的文件时,您需要输入最新版本。
但您可以使用 Rest API:Changesets - Create 获取最新版本号
这是一个 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 PM\nEdited 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用于获取所有changestIDs,结果默认按降序排列。所以你只需要取第一个值即最新值即可。
然后你可以在第二个RestAPI的请求正文中将the latest value
设置为version
来编辑文件。
顺便说一句,考虑到您使用的是 TFS,您可能需要将 url 更改为以下内容:
我正在尝试使用此处显示的示例在 TFS 上编辑文件的最新版本: https://docs.microsoft.com/en-us/rest/api/azure/devops/tfvc/changesets/create?view=azure-devops-rest-5.0
但是这个请求要求编辑文件的版本。
有没有办法在不传递实际文件版本的情况下编辑文件的最新版本?
提前致谢,
Is there a way to edit a file's last version without passing the actual file version?
根据我的测试,版本字段是必需的。
所以当您使用 Rest API 编辑 TFVC 仓库中的文件时,您需要输入最新版本。
但您可以使用 Rest API:Changesets - Create 获取最新版本号
这是一个 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 PM\nEdited 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用于获取所有changestIDs,结果默认按降序排列。所以你只需要取第一个值即最新值即可。
然后你可以在第二个RestAPI的请求正文中将the latest value
设置为version
来编辑文件。
顺便说一句,考虑到您使用的是 TFS,您可能需要将 url 更改为以下内容: