如何使用 Azure DevOps REST API 更新文件?

2023-12-22

我正在尝试更新test.json文件托管在 Azure DevOps Repo 上。我正在使用逻辑应用程序。无法从文档中识别操作顺序。

我想我需要...

  1. 向以下地址发出 GET HTTP 请求Items端点: https://learn.microsoft.com/en-us/rest/api/azure/devops/git/items/get?view=azure-devops-rest-6.0#get-metadata

    • https://dev.azure.com/myOrg/myProject/_apis/git/repositories/myRepoID/items?scopePath=/data/test.json&$format=json&api-version=6.0
    • 回复:
    {
      "count": 1,
      "value": [
        {
          "objectId": "<longGUID>",
          "gitObjectType": "blob",
          "commitId": "<longGUID>",
          "path": "/data/test.json",
          "url": "https://dev.azure.com/myOrg/longGUID/_apis/git/repositories/myRepoID/items?path=%2Fdata%2Ftest.json&versionType=Branch&versionOptions=None"
        }
      ]
    }
    
  2. Use the objectId在响应中发出 POST HTTP 请求Pushes终点 https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pushes/create?view=azure-devops-rest-6.0#add-a-binary-file

    • Body:
{
  "refUpdates": [
    {
      "name": "refs/heads/main",
      "oldObjectId": "<longGuid from previous response>"
    }
  ],
  "commits": [
    {
      "changes": [
        {
          "changeType": "edit",
          "item": {
            "path": "/data/test.json"
          },
          "newContent": {
            "content": "CHECK CHECK!",
            "contentType": "rawtext"
          }
        }
      ],
      "comment": "My commit message"
    }
  ]
}

Error:

  • 状态 409 冲突
{
  "$id": "1",
  "innerException": null,
  "message": "TF401028: The reference 'refs/heads/main' has already been updated by another client, so you cannot update it. Please try again.",
  "typeName": "Microsoft.TeamFoundation.Git.Server.GitReferenceStaleException, Microsoft.TeamFoundation.Git.Server",
  "typeKey": "GitReferenceStaleException",
  "errorCode": 0,
  "eventId": 3000
}

问题:

  1. 我的操作顺序正确吗?
  2. 我该如何克服这个问题?

FIX:(谢谢@Leo_Liu-MSFT)

  1. 获取请求至https://dev.azure.com/myOrg/myProject/_apis/git/repositories/repoID/commits?searchCriteria.$top=1&searchCriteria.itemVersion.version=main&api-version=6.0

  2. 将请求发送至https://dev.azure.com/myOrg/myProject/_apis/git/repositories/repoID/pushes

  • Body:
{
  "commits": [
    {
      "changes": [
        {
          "changeType": "edit",
          "item": {
            "path": "<Your File To Update>"
          },
          "newContent": {
            "content": "CHECK CHECK!",
            "contentType": "rawtext"
          }
        }
      ],
      "comment": "<YOUR COMMIT MSG>"
    }
  ],
  "refUpdates": [
    {
      "name": "refs/heads/main",
      "oldObjectId": "<commitId from previous response>"
    }
  ]
}

如何使用 Azure DevOps REST API 更新文件?

The oldObjectId请求正文中的值不是objectId.

应该是分支的最新提交 SHAmain.

  • 转到代码页 > 文件
  • 选择存储库和分支
  • 选择根级别(存储库名称)> 历史记录
  • 单击第一个提交的 ... > 复制完整 SHA

价值应该是创建一个新的分支0000000000000000000000000000000000000000当用于创建新分支时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Azure DevOps REST API 更新文件? 的相关文章

  • VSTS 构建已过期

    我创建了一个拉取请求 它触发构建并且构建成功 但一段时间后我的构建状态更改为 构建已过期 因此要完成拉取请求 我需要再次触发它 所以问题是 为什么会发生这种情况以及如何避免构建过期 构建过期 是分支机构政策的一个特点 设置构建到期时间 以确
  • Azure DevOps REST API - 选项列表如何与字段关联?

    I am trying to use rest to create fields and picklists on the web site I created a field as type picklist String and add
  • Azure DevOps Rest Api 是否返回正确数量的拉取请求?

    我们正在尝试收集有关拉取请求的信息 以便为我们的部门建立某些指标 完成拉取请求需要多长时间 Azure DevOps 提供了一个 API 来查询很多东西 包括拉取请求 我在这里查了一下用法 https learn microsoft com
  • 将源代码从 git 迁移到 TFVC

    我们使用的是Visual Studio Online 我们使用TFS的git支持 我们现在想停止使用 git 并使用 TFVC 将源代码迁移到 TFVC 的最佳解决方案是什么 假设您正在 VSO 中创建另一个项目并移动源代码 按照目前的情况
  • Pulumi Azure Pipeline 任务

    我是 Pulumi 的新手 所以目前我正在努力尝试在我的 Azure 发布管道中运行它以创建我的基础设施 在开发过程中 我使用本地存储来存储我的 pulumi 状态 pulumi login local 我已经创建了我的堆栈 dev 是其中
  • Azure DevOps 通过 REST API 获取链接到工作项的提交

    有没有办法获取链接到仅给定工作项 ID 的工作项的 Git 提交 我正在使用 PowerShell 和this https learn microsoft com en us rest api azure devops wit work 2
  • 在 Electron/angularjs 应用程序中访问 TFS 和 Visualstudio 在线 REST Api

    使用 angularjs 在 Electron 中在线集成 TFS 和 Visual Studio 的最佳方法是什么 用户可以提供服务器的用户名 密码和 URL 我想要获取项目 任务 在状态之间移动任务 创建新项目等 我有一个使用 Angu
  • VSO:具有分层区域结构的单一项目?

    历史上我们一直有各自的VSO正在开发的每个逻辑项目的项目 这一点尤其重要 因为我们需要为每个项目都有单独的积压工作 每个项目都有自己的产品负责人 我们有一个由大约 10 名开发人员组成的团队 他们在这些项目之间工作超过 2 周的冲刺 在使用
  • 如何重新运行成功的 azure devops YAML 管道阶段以及后续的任何阶段?

    阶段 A gt B gt C gt D C 失败并出现错误 暗示阶段 B 的输出存在问题 尽管它成功了 作为失败的阶段 我可以重新运行 C 如果成功 D 将运行 在本例中它仍然失败 我可以重新运行 B 它再次成功 但是 C 和 D 被 跳过
  • VSTS/Azure DevOps:包上自动增量 NuGet 包版本

    运行 NET Core Pack任务 如何让输出的NuGet包版本自动递增 例如 如果我当前的版本是1 0 0 那么下次我调用 Pack 任务时 我想看看1 0 1 我正在使用环境构建变量Build BuildNumber并在例如时刻获得输
  • 如何在部署作业期间设置 XML 转换的环境名称?

    好的 伙计们 给 Azure多级管道尝试一下 但不太幸运地使用部署作业进行 xml 转换 Update 这没有使用 Azure DevOps 中的经典部署 发布 UI 到目前为止我所做的 从构建过程中删除转换 尝试一次构建并随处部署 通过删
  • 在 azure Devops 管道中部署 SQL 时遇到错误

    我在 azure Devops 的发布管道中使用 sql DACPAC 类型的部署 但出现以下错误 我对 SQL 不了解 有什么建议吗 Publishing to database database name on server Serve
  • Visual Studio Online 中的时间跟踪

    有没有办法测量 Visual Studio Online 中用例或任务所花费的时间 我希望将所有内容保存在一个地方 Visual Studio Online 就是这种情况 并从那里能够生成报告 例如每个用户的每月时间跟踪报告和反映实际工作时
  • 如何在完成后删除Azure管道工件?

    我有以下管道结构 Job A gt Generate build files Parallel Job B gt Uses the build files Job C gt Uses the build files Job D gt Pub
  • Azure DevOps 的缩写是什么?

    我认为它可能是 ADO 但这会使其与遗留的 Microsoft 数据访问层 ActiveX 数据对象 或它所代表的任何内容相混淆 或者 DevOps 但这会使其与一般的 DevOps 相混淆 而且它是无论如何 也没有那么短 是否有官方缩写或
  • Azure DevOps / VSTS 失败的计划构建的电子邮件通知

    计划的构建已设置为每天在特定时间运行 例如下午 13 点 通过 Azure DevOps VSTS 但是 失败的计划构建不会发送电子邮件通知 当手动启动构建或由代码更改触发构建时 就会发生这种情况 如何在计划构建失败时启用电子邮件通知 创建
  • 有没有办法使用 API 列出拉取请求文件(来自源分支)及其在 Azure Devops 中的位置?还有其他使用C#的方法吗?

    我的要求是使用 API 或 C 读取 提取 Azure DevOps 拉取请求中存在的每个文件的源代码 我可以使用下面的示例 URL 下载特定文件的代码 GET https dev azure com organization projec
  • Azure Devops 反应脚本测试永远挂起

    我正在尝试在 Azure Dev Ops 中运行我的 React 应用程序的测试 但我不知道如何在测试运行后停止执行 它只是挂在那里 使管道永远处于运行模式 这是一个简单的 create react app 应用程序 有几个测试 以下是我的
  • Azure Functions v3 /HTTP 触发函数:限制请求正文和 URL 大小

    我想看看如何限制最大请求长度 and 最大允许内容长度使用 HTTP 触发器和 Azure Functions v3 创建的 API 中的属性 使用 Net core 应用程序 3 1 我尝试过使用网络配置刚刚被忽略的文件 预期 但我不确定
  • Azure DevOps - 使用 GUI 而不是 YAML 来编辑构建管道

    不久前 Azure DevOps 添加了对 YAML 构建管道的支持 这对于高级用户来说非常好 我明白 专业人士只使用命令行和纯文本工具 GUI 适合弱用户 原因有很多 有没有办法返回 GUI 经典编辑器 来编辑现有管道 我已禁用该功能 如

随机推荐

  • css div高度100%问题?

    我想要一个 div 占据所有屏幕高度 这就是为什么我找到以下链接 http www webmasterworld com forum83 200 htm http www webmasterworld com forum83 200 htm
  • 重用PreparedStatement中的参数?

    我将一个参数传递给一个PreparedStatement 如下所示 public void getNodes String runId File file Connection conn PreparedStatement ps null
  • 我可以在 QNX 上使用 Java 吗?

    我必须侍奉两个主人 一个项目预计在 v1 0 后将一分为二 它最初是一个使用 FreeRTOS 用 C 语言编码的简单嵌入式项目 直到 v1 0 为止 后来 一位大师说我们必须使用QNX来取悦合作伙伴 否则就会失去交易 而另一位大师则说我们
  • 在 rmarkdown 中创建模板

    我正在尝试创建自定义模板 但它不会显示 我已经尝试跟随https bookdown org yihui rmarkdown template struct html https bookdown org yihui rmarkdown te
  • Power Query 为空时上移值

    目前 我在 Excel 中有一个大表 我想将其与动态下拉列表 级联选项 一起使用 根据您在第一个下拉菜单中所做的选择 然后在下一个单元格中 您应该有一个经过筛选的下拉菜单 此外 任何选项对于所选的主类别都是唯一的 我做的第一件事是获取我需要
  • fsock:无法找到套接字传输“http”

    我想用 fsock 发送后变量 但是当我尝试这个时 post arr array a gt b addr http 1 2 3 4 confirmation html fp fsockopen addr 80 errno errstr 30
  • 使用 CloudFormation 添加对 AWS websocket API 的集成响应

    AWS recently released Cloudformation support for templating websocket API gateways https aws amazon com about aws whats
  • JFreechart 中漂亮的饼图

    是否有可能在 JFreechart 中为饼图获得复杂 漂亮的颜色 我的意思是我怎样才能获得如图所示的颜色link http upload wikimedia org wikipedia commons b bf Ml wiki photo
  • SVG 错误:访问属性“someFunction”的权限被拒绝

    请看一下这个小提琴 http jsfiddle net arasbm Tyxea 14 http jsfiddle net arasbm Tyxea 14 正如你所看到的 我想在 SVG 元素上触发事件时对其进行转换 您可以单击箭头 它应该
  • 复制二进制文件的内容

    我正在设计一个图像解码器 作为第一步 我尝试复制使用 c 即打开文件 并将其内容写入新文件 下面是我使用的代码 while c getc fp EOF fprintf fp1 c c 其中 fp 是源文件 fp1 是目标文件 程序执行时没有
  • 字母数字和 + 字符的正则表达式

    我需要一个仅允许字母数字加上 和 字符的正则表达式 现在我正在使用 w 以下模式将匹配仅包含字母 数字 或 的字符串 包括 或 等国际字符 并且不包括 中包含的 字符 w p L p N 例子 string pattern p L p N
  • Azure AD 的访问令牌颁发者是 sts.windows.net 而不是 login.microsoftonline.com

    我正在尝试验证从 azure Active Directory 获取的访问令牌 我从以下位置获得了令牌https login microsoftonline com my tennant guid v2 0 返回的令牌中的发行者是https
  • 应用程序引擎 + 模块 + Maven 的开发工作流程

    我们最近将我们的应用程序引擎项目按照以下结构转换为模块 这个新的开发工作流程的问题是 我们必须在每次更改时重建 EAR 并重新启动应用程序引擎本地开发服务器 这使得每次我们更改代码并想要测试它时 我们都会浪费 30 秒到一分钟的时间 com
  • PorterDuffXfermode DST_IN 未按预期工作

    因此 我试图加快我们正在做的一些绘制 使用 alpha 透明度绘制弧的一部分 并尝试将整个弧缓存到单独的位图中 并使用 alpha 遮罩有选择地显示它 根据我所做的研究 Android 的 Xfermodes API 演示 这个例子 htt
  • Swagger UI 将身份验证令牌传递给标头中的 API 调用

    我是 Swagger 的新手 我正在使用 Swagger UI 生成 swagger 文档 我有两个 API 调用 第一个调用是根据用户名和密码生成令牌 第二次调用需要第一次调用生成的令牌 如何使用 Swagger UI 设置第二次调用的令
  • 如何创建 AvalonEdit 语法文件 (.xshd) 并将其嵌入到我的程序集中?

    我正在尝试为 AvalonEdit 定义一些自定义突出显示规则 似乎没有任何相关文档 有有关文件格式的一些文档 http www codeproject com KB edit AvalonEdit aspx 但没有介绍创建定义后如何实际加
  • 创建增量按钮,如果边距大于 2800 像素,该按钮将关闭

    我正在制作一个滑块 并且正在尝试弄清楚如何专门对按钮进行编程 我希望它在单击时以 700 像素的增量向左移动 但是一旦 marginLeft 大于 2800 像素 因为单击时它不会执行任何操作 现在我有以增量移动容器的部分 但我不确定如何制
  • pyspark - 合并 2 列集合

    我有一个 Spark 数据框 它有 2 列由函数collect set 形成 我想将这两列集合合并为一列集合 我应该怎样做呢 它们都是一组字符串 例如 我有两列是通过调用collect set形成的 Fruits Meat Apple Or
  • 如何用正确的行数填充表格以适应不同屏幕分辨率下的页面高度?

    我在前端开发了自己的网络管理 这是一个典型的 Admin 其中包含容器 左侧的一个菜单导航和右侧的正文内容 其中显示与单击的菜单项相关的结果 通常是表格 为了以 100 适合正文页面 获得表格中正确的行数或行数的最佳方法是什么 就我而言 我
  • 如何使用 Azure DevOps REST API 更新文件?

    我正在尝试更新test json文件托管在 Azure DevOps Repo 上 我正在使用逻辑应用程序 无法从文档中识别操作顺序 我想我需要 向以下地址发出 GET HTTP 请求Items端点 https learn microsof