gpt4 book ai didi

azure-devops - 有没有办法通过 Azure Devops API 获取提交的原始差异?

转载 作者:行者123 更新时间:2023-12-04 04:10:29 26 4
gpt4 key购买 nike

作为我们应用程序的一部分,我们正在构建与 Azure DevOps 的 REST API 集成的能力。我们感兴趣的一个关键组件是能够查看特定提交的实际差异,以便我们可以查看和分析行内容。我们已经为 GitHub、GitLab 和 Bitbucket 创建了这种集成,每次都很简单:每个都有一个相当简单的 diff 端点,它接受特定的提交 ID 并对其进行区分(有时具有特定的父提交)。
然而,我在 Azure DevOps 中找到相同功能的运气并不好:diffs endpoint有一些与此相关的数据,但它实际上只是概述了哪些文件发生了更改以及这些更改的高级性质,以及代表每个状态(之前和之后)的文件的特定 blob 的 ID。
理论上可以使用这些 blob 手动构建我想要的内容,实际上我已经能够查询前后 blob 以获取每个文件的差异。但这是每个文件的两个单独的端点查询——提交 20 个文件,突然间我们需要 40 个 API 调用来构建合理的差异。不幸的是,这并不真正符合我们的性能需求。
是否有单独的 API 端点或技术可以让我们获得原始差异?它不需要是原始差异 la git diff直接,任何可以让我们以最少的 API 调用(最好只有一个)查看每一行(而不是每个文件)的前后状态的东西。我已经在文档和 StackOverflow 上进行了大量搜索,但没有找到任何可以完成此操作的内容。

最佳答案

没有现有的 Rest API 可以满足您的需求。但是你可以引用下面的步骤来获取git diff的内容。

步骤1:您可以使用Rest API 到get the commit id .

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?api-version=5.0

步骤 2:您可以使用 Rest API 到 get the commit by commit id .
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}?changeCount={changeCount}&api-version=5.0

在Rest API Result中,需要记录 的值“parentsid”,“路径” .

Step3:您可以使用以下API来获取差异内容。
Post https://dev.azure.com/Organization/Project /_api/_versioncontrol/fileDiff?__v=5&diffParameters={value}&repositoryId={repositoryid}

{value} 是 Json 类型。

下面是一个例子:
{"originalPath":"filepath","originalVersion":"Parentsid","modifiedPath":"filepath","modifiedVersion":"commitid","partialDiff":true,"includeCharDiffs":true}

您可以将该值添加到 API URL。

然后运行 ​​API,结果将包含 git diff 内容。 (2 表示删除,1 表示添加)

这是一个结果示例:

API Result

这是 the ticket引用一下,希望对你有帮助。

关于azure-devops - 有没有办法通过 Azure Devops API 获取提交的原始差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61827842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com