首页 > 解决方案 > 是否可以通过 api 获取提交更改(仅限差异)?

问题描述

我正在尝试通过 api 拉取提交更改,我得到的只是文件本身的路径,就像在整个文件中一样。
我想要实现的是每次提交查看单个文件的更改(仅限差异)。

例如:如果我使用 Github 查询相同的内容,我会得到如下差异:
"@@ -1 +0,0 @@\n- console.log(\"Blasting!\")"

Azure-devops 中是否有类似的解决方案?
谢谢!

标签: azure-devopsazure-devops-rest-api

解决方案


我想要实现的是每次提交查看单个文件的更改(仅限差异)。

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

第 1 步:您可以使用 Rest API 来获取提交 id

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

第 2 步:您可以使用 Rest API通过 commit id 获取提交

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

在 Rest API Result 中,您需要记录 parentsid的值。

第三步:你可以使用Rest API来获取文件路径。

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

Step4:您可以使用以下 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 表示添加)

这是一个结果示例:

在此处输入图像描述

这是 ,你可以参考一下。


推荐阅读