【发布时间】:2016-11-03 02:55:44
【问题描述】:
我需要检测和解析在不同拉取请求之间对存储库中特定单个文本文件所做的更改的网络项目。
我已经能够使用 Github API 成功访问拉取请求和提交,但我不知道如何检索上次提交中更改的行?
这可以使用 API 实现吗?最好的方法是什么? 如果不是,我应该尝试读取最后两个文件版本并在本地实现不同的算法吗? 谢谢!
【问题讨论】:
我需要检测和解析在不同拉取请求之间对存储库中特定单个文本文件所做的更改的网络项目。
我已经能够使用 Github API 成功访问拉取请求和提交,但我不知道如何检索上次提交中更改的行?
这可以使用 API 实现吗?最好的方法是什么? 如果不是,我应该尝试读取最后两个文件版本并在本地实现不同的算法吗? 谢谢!
【问题讨论】:
拉取请求包含 diff_url 条目,例如
"diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff"
您可以对任何提交执行此操作。例如,要获取 octocat 的 Hello-World 上提交 7fd1a60b01f91b3 的差异,它是 https://github.com/octocat/Hello-World/commit/7fd1a60b01f91b314f59955a4e4d4e80d8edf11d.diff。
这也适用于分支。这是 octocat 的 Hello-World 的大师。 https://github.com/octocat/Hello-World/commit/master.diff.
一般形式为:
https://github.com/<owner>/<repo>/commit/<commit>.diff
【讨论】:
"Accept: application/vnd.github.v3.diff" 标头(patch 也可以)。来源:github.community/t5/GitHub-API-Development-and/…
对于私有存储库:
curl -H "Accept: application/vnd.github.v3.diff" https://<personal access token>:x-oauth-basic@api.github.com/repos/<org>/<repo>/pulls/<pull request>
也适用于普通 cURL -u 参数。
见:https://docs.github.com/en/rest/reference/pulls#get-a-pull-request
【讨论】: