如何获取两个提交之间拉取请求的列表

12
我想制作一个工具,在SourceTree中检索两个提交之间完成的所有拉取请求(标题和正文)。我拥有2次提交的哈希值,可以使用单个git log获取之间的每个提交哈希值。我可以调用Github的API列出存储库的所有拉取请求,但是这里我遇到了问题。
两种方法似乎可以通过匹配日期范围或解析与拉取请求相关的提交并查看它们是否匹配来完成,但这不像是一个清洁的解决方案。
有人知道如何实现吗? 谢谢。

你所说的“两个提交”具体是指什么?目标分支和源分支的头部吗? - amaslenn
你如何定义一个拉取请求是否“介于”两个提交之间?是根据拉取请求的创建时间还是基础提交位于两个提交之间? - 1615903
似乎有人已经为此编写了一个脚本 - sschuberth
2个回答

14

如果您可以使用grep命令,您可以通过使用git log命令加上grep来获取PR编号。

git log --oneline commit1...commit2 | grep 'Merge pull request #'

请记住,您可以使用实际的标签或发布代替commit1和commit2。

如果您想获取标题和正文,则需要从上面提取数字,然后调用github API GET /repos/:owner/:repo/pulls/:number (请参见https://developer.github.com/v3/pulls/

要查找PR的总数,请运行:

git log --oneline commit1...commit2 | grep 'Merge pull request #' | wc -l

1
很遗憾,这对于压缩或变基的PR无效。 - the21st
你还可以使用 gh api 通过 https://docs.github.com/en/rest/commits/commits#compare-two-commits 提取原始的增量信息。 - John Michelau

0
我会研究官方的 Github 命令行工具。

https://cli.github.com/manual/gh_pr_list

通过这个可以列出PR。如果只需在日期范围内搜索而不是提交,您可以轻松地像这样获取在两个日期之间合并的所有PR:

gh pr list --base main --search "merged:2023-03-10..2023-03-15" --limit 100


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接