我在尝试使用 Azure DevOps REST API 删除远程 Git 分支时遇到问题。尽管验证了权限并尝试了个人访问令牌 (PAT) 和承载令牌身份验证方法,但我始终收到一条错误,指示所请求的资源不支持 HTTP 方法“POST”。以下是我正在使用的详细代码片段以及其他上下文:
curl -X POST -u username:token -H "Content-Type: application/json" -d '{"refUpdates":[{"name":"refs/heads/{branchName}","oldObjectId":"{objectId}"}]}' "https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pushes?api-version=6.0-preview.1"
{"count":1,"value":{"Message":"The requested resource does not support http method 'POST'."}}
尝试过的身份验证方法:我尝试了 PAT 和 Bearer token 身份验证方法来验证 API 调用。
权限已验证:我已验证用于身份验证的令牌具有完全访问权限。
API 端点和版本:API 调用针对具有正确版本
/_apis/git/repositories/{repositoryId}/pushes
的适当端点 api-version=6.0-preview.1
。
目标:我的目标是使用 Azure DevOps API 以编程方式删除远程 Git 分支。
我已彻底查看了 Azure DevOps API 文档并确保遵循正确的过程,但问题仍然存在。任何有关如何解决此问题的见解或建议将不胜感激。谢谢!
API“Pushes - Create”不能用于从 Azure Git Repos 删除分支,相反,您应该使用 API“Refs - Update Refs”。
下面是一个 Bash 脚本,用于使用 curl 命令调用相关 API 从 Azure Git Repos 删除分支。
#!/bin/bash
organization="{organization}"
project="{project}"
repository="{repository}"
branchName="{branchName}" # e.g., refs/heads/develop
pat="{pat}"
uri="https://dev.azure.com/$organization/$project/_apis/git/repositories/$repository/refs?api-version=7.0"
# Get the objectId of the branch.
objectId=$(curl -X GET -u :$pat $uri | jq -r --arg branchName $branchName '.value[] | select(.name==$branchName) | .objectId')
echo "objectId = $objectId"
# Delete the branch.
curl -X POST -u :$pat $uri \
-H "Content-Type: application/json" \
-d "[
{
\"name\": \"$branchName\",
\"newObjectId\": \"0000000000000000000000000000000000000000\",
\"oldObjectId\": \"$objectId\"
}
]"