[英]Is it possible to get a list of commit comments via the Azure devops API?
[英]Is there a way to get the raw diff of a commit via the Azure Devops API?
作為我們應用程序的一部分,我們正在構建與 Azure DevOps' REST API 集成的能力。我們感興趣的一個關鍵組件是能夠看到特定提交的實際差異,以便我們可以查看和分析行內容。 我們已經為 GitHub、GitLab 和 Bitbucket 創建了這個集成,每次都很簡單:每個都有一個相當簡單的差異端點,它接受特定的提交 ID 並對其進行差異化(有時與特定的父提交)。
然而,我在 Azure DevOps 中找到相同功能的運氣並不好:diffs 端點有一些與此相關的數據,但它實際上只是對更改了哪些文件以及這些更改的高級性質的概述,以及表示每個 state(之前和之后)中文件的特定 blob 的 ID。
理論上可以使用這些 blob 手動構建我想要的內容,事實上我已經能夠查詢之前和之后的 blob 以獲得每個文件的差異。 但這是每個文件兩個單獨的端點查詢——提交 20 個文件,突然間我們需要 40 次 API 調用來構造一個合理的差異。 不幸的是,這並不能真正滿足我們的性能需求。
是否有單獨的 API 端點或技術讓我們了解原始差異? 它不需要直接是git diff
的原始差異,只需讓我們看到每行(而不是每個文件)的 state 之前和之后的任何東西,只需最少的 API 調用(最好只有一個)。 我已經通過文檔和 StackOverflow 上的此處進行了大量搜索,但沒有找到任何可以實現此目的的東西。
沒有現成的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 通過提交 ID 獲取提交。
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}?changeCount={changeCount}&api-version=5.0
在 Rest API Result中,需要記錄“parentsid”、“path”的值。
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表示添加)
這是一個結果示例:
這是我參考的ticket ,希望對你有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.