簡體   English   中英

按日期范圍(從現在到過去日期)獲取拉取請求(或合並請求)-GitHub/GitLab REST API

[英]Get pull requests (or merge requests) by date range (from now to past date) - GitHub/GitLab REST API

我們希望從現在到過去的某個日期(“created_at”或“merged_at”日期)獲取拉取請求或合並請求。

有沒有辦法獲取從某個日期(例如:2019-02-02)到現在的“created_at”或“merged_at”數據列表? 如果是,使用 curl 命令時看起來如何?

您可以從下面列出的鏈接中查看 JSON 結構。 非常感謝。

例如:“created_at”>= 2019-02-02

curl "https://github.com/api/v3/repos/{repoIdOrName}/pulls?state=closed" -X GET -H "Authorization: token XXXX" -H "Accept: application/vnd.github.sailor-v-preview+json"
  • GitLab: https ://docs.gitlab.com/ee/api/merge_requests.html#list-merge-requests
curl "https://gitlab.com/api/v4/projects/{repoIdOrName}/merge_requests?target_branch=master" -XGET -H "PRIVATE-TOKEN: XXXX"

對於 gitlab,根據您提到的文檔,您可以使用created_after參數。 所以:

curl "https://gitlab.com/api/v4/projects/{repoIdOrName}/merge_requests?target_branch=master&created_after=2020-02-02" -XGET -H "PRIVATE-TOKEN: XXXX"

應該做的伎倆

不幸的是, .../<owner>/<repo>/pulls路由目前不允許這種查詢。 為此,您需要使用通用的.../issues路線。 在 GitHub 中,一個Pull Request是一個Issue的實例。

調整並卷曲以下 URL(將<owner><repo>替換為您自己的):

https://api.github.com/search/issues?q=repo:<owner>/<repo>+is:pr+created:>=2020-08-15

幾點說明:

  • 我省略了身份驗證部分; 使用適合您的用例的策略。
  • 結果的結構不同: .../pulls路由返回一個數組,而.../issues路由返回一個在items字段中嵌入數組的對象。 此外,返回的對象包含的信息少於.../pulls路由返回的信息。 例如, merged_at字段不存在,因為是_links字段。 但是,在每個 PR 對象中,都有一個.pull_request.url字段,其中包含一個 URL,它將以相同的格式返回您將從.../pulls URL 獲得的所有 PR 數據。
  • 如果您需要通過updated_at日期字段進行過濾,只需在上述查詢中放置updated而不是created closedmerged似乎也有效。
  • 您可以通過將諸如&sort=created&order=asc的內容附加到查詢 URL 來對結果進行排序。
  • 分頁的處理方式相同:如果您的查詢結果包含太多項目,則在標題中提供到下一頁的鏈接(使用-I參數與 curl),您可以使用正則表達式'^link:.*?<([^>]+)>; rel="next".+' '^link:.*?<([^>]+)>; rel="next".+'提取第一組中下一頁的鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM