给定一个提交范围,比如说:
是否可以获得这些提交关闭的问题列表?
我能说的唯一方法是手动转到每个提交,找到相应的 PR,然后查看是否有任何与之相关的问题。有什么办法可以自动化吗?
给定一个提交范围,比如说:
是否可以获得这些提交关闭的问题列表?
我能说的唯一方法是手动转到每个提交,找到相应的 PR,然后查看是否有任何与之相关的问题。有什么办法可以自动化吗?
看起来提交顶部的漂亮链接表明它们关联的 PR 来自不向公众公开的内部 API。据我所知,这样做的方法(使用官方 API 而不是对任何内部端点进行逆向工程)将列出拉取请求(https://developer.github.com/v3/pulls/#list-pull- requests),过滤具有链接问题的问题,然后获取合并提交(看起来您的 repo 使用合并提交)以确定哪些 PR 在所需范围内提交。这是一个如何做到这一点的例子。我没有包括如何获取范围的提交,只是想演示所需的 github api 片段。此脚本打印出与给定 repo 相关问题的合并提交以及链接问题。
#!/bin/bash
echo "[" > allResults
i=1
numResults=1
firstRun=1
while [[ $numResults -gt 0 ]]
do
curl -X GET -u ${GITHUB_USERNAME}:${HOMEBREW_GITHUB_API_TOKEN} "https://api.github.com/repos/microsoft/msquic/pulls?state=closed&page=$i" > page
numResults=`cat page | jq '. | length'`
i=$[$i + 1]
if [[ $numResults -gt 0 ]]
then
# bit of nonsense to deal with trailing comma problem
if [[ $firstRun -ne 1 ]]
then
echo "," >> allResults
fi
if [[ $firstRun -eq 1 ]]
then
firstRun=0
fi
cat page | awk 'NR != 1 { print buffer; buffer = $0 }' >> allResults
fi
done
echo "]" >> allResults
echo "[" > prsWithIssues
# select only PRs with issues then use the crazy awk business to put
# back the commas in the array
cat allResults | jq '.[] | select(.has_issues == true)' | awk '/^{/ { if (endsWithBrace) {print","$0} else {print} ; endsWithBrace=0} !/^{/ {endsWithBrace=1; print} /.*\}$/ { endsWithBrace = 1 }' >> prsWithIssues
echo "]" >> prsWithIssues
cat prsWithIssues | jq '.[] | "\(.merge_commit_sha) \(._links.issue.href)"' > mergeCommitToIssueLink
# just printing here, you'll probably want
# to do a grep for commits in the range you want
cat mergeCommitToIssueLink
正如评论中提到的@Eric_Wang;Github 的“问题”不会(必然)关联特定的提交或分支,除非手动标记了很多。合并的 Github拉取请求将再次出现,除非它们手动与问题相关联。但是(考虑到赏金的时间限制)您可以使用Preview v3 Commit Search API对匹配或引用您给定请求的问题和 PR 进行文本 grep。如果时间延长,我会给你举个例子,但它是不言自明的