使用 Python 推送创建 Api 将文件上传/推送到 Azure Devops Repo 时如何查找 oldobjectid

Ash*_*rma 4 python git python-requests azure-devops azure-devops-rest-api

我试图自动执行将某些文件推送到存储库中的各个文件夹的任务。我尝试使用azure提供的Rest API。当使用 Pushes Create API 进行相同操作时,从文档中,这是请求正文中的内容

请求正文的快照:

这是我无法弄清楚如何进入 python 脚本“oldObjectId”的具体事情:“8b67126d2500e28c771f82c9ddc292679978197c”

我知道我必须使用 python requests 库发送一个包含与上面类似的数据的 JSON 变量。但我不知道如何在python脚本中获取oldobjectid。我尝试到处查找(文档、stackoverflow...),但无法找到如何找到 oldobjectid。

api文档的链接

Leo*_*SFT 8

使用 Python 推送创建 Api 将文件上传/推送到 Azure Devops Repo 时如何查找 oldobjectid

oldobjectid是Azure Devops Repo 当前分支上的最新提交 ID 。

要获取oldObjectId(最新提交 ID),我们可以使用 REST API推送 -带有 URI 参数的列表top=1searchCriteria.refName=refs/heads/master

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pushes?&$top=1&searchCriteria.refName=refs/heads/master&api-version=6.0
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在,我们得到了pushId,并且我们可以使用 REST API Pushes - Get来获取commitId

在此输入图像描述

然后,我们可以使用 REST API Pushes - Create with request body:

{
  "refUpdates": [
    {
      "name": "refs/heads/master",
      "oldObjectId": "e71544e80870e83cfd3eb3a797eda9c6227c66a7"
    }
  ],
  "commits": [
    {
      "comment": "Added task markdown file.",
      "changes": [
        {
          "changeType": "add",
          "item": {
            "path": "/tasks.md"
          },
          "newContent": {
            "content": "# Tasks\n\n* Item 1\n* Item 2",
            "contentType": "rawtext"
          }
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

测试结果:

在此输入图像描述