是否有办法通过 Azure Devops API 获得提交的原始 diff?

问题描述 投票:1回答:1

作为我们应用的一部分,我们正在构建一种与 Azure Devops 的 Rest API 集成的能力。我们感兴趣的一个关键组件是能够看到特定提交的实际差异,这样我们就可以查看和分析行内容。我们已经为GitHub、GitLab和Bitbucket创建了这个集成,每次都很简单:每个集成都有一个相当简单的diff端点,它可以接收一个特定的提交sha并对其进行diff(有时是和一个特定的父提交)。

然而,我在 Azure Devops 中并没有找到同样的功能。在Azure Devops中,我还没有找到同样的功能。差异端点一些 相关的数据,但实际上只是概述了哪些文件发生了变化,这些变化的高级性质,以及代表每个状态下的文件的特定 blobs 的 ID(前后)。

理论上可以用这些bloom来手动构造我想要的东西,事实上我已经可以查询到之前的 后的 blobs 来获取每个文件的差异。但是每个文件都有两个独立的端点查询 -- 以一个20个文件的提交为例,突然间我们需要40次API调用才能构建一个合理的差异。不幸的是,这并不真正符合我们的性能需求。

有没有一种单独的API端点或技术可以让我们获得原始差异?它不需要是一个原始的差分,比如说 git diff 直接,只要能让我们看到每一个人的前后状态 (而不是每个文件),用最少的API调用(最好只有一个)。我在文档和StackOverflow上做了很多搜索,但没有找到任何可以实现这个功能的方法。

预先感谢您的帮助。

azure-devops azure-devops-rest-api
1个回答
0
投票

目前还没有现有的Rest API来满足你的需求。但你可以参考以下步骤来获取git diff的内容。

第一步:你可以使用Rest API来实现以下功能 获取提交ID.

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

步骤2: 你可以使用Rest API来实现 通过提交ID获取提交.

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

在Rest API Result中,你需要记录以下的值 "parentid","path".

Step3:你可以使用下面的API来获取diff内容。

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内容。

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

这里是一个结果样本。

API Result

这是 车票 我参考一下,希望对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.