我正在寻找的只是一种获取给定里程碑问题列表的方法。看起来 Github 对待里程碑有点像标签,因为您可以要求问题的标签,但不能要求给定标签的问题。
我知道我可以在 Github 网站上按里程碑过滤我的问题,但这会遍历多个页面,我想要一种简单的方法来查看所有问题,以便在更易于打印的版本中找到里程碑。
有小费吗?
我正在寻找的只是一种获取给定里程碑问题列表的方法。看起来 Github 对待里程碑有点像标签,因为您可以要求问题的标签,但不能要求给定标签的问题。
我知道我可以在 Github 网站上按里程碑过滤我的问题,但这会遍历多个页面,我想要一种简单的方法来查看所有问题,以便在更易于打印的版本中找到里程碑。
有小费吗?
您可以为此使用 GitHub 的 API。请参阅此处了解如何获取 repo 的问题列表并注意里程碑参数。您将得到的响应是一个大的 JSON 文档,因此您必须创建一个小脚本来仅提取问题的标题,或者使用 grep 或类似jq的东西。
另请注意,API 响应也是分页的,但您可以将分页设置为每页 100 个条目,这通常就足够了。如果没有,您将不得不再次创建一个小脚本来获取所有页面(或手动执行)。
您可以使用V4 的 GraphQL API。并执行以下操作:
{
repository(owner: "X", name: "X") {
milestone(number: X) {
id
issues(first: 100) {
edges {
node {
id,
title
}
}
}
}
}
}
给定一个里程碑$title
,$owner/$repo
我们可以使用 curl 和 jq 列出这个里程碑中的问题:
api_url="https://api.github.com/repos/$owner/$repo"
MS=$(curl -s "$api_url/milestones" | jq '.[] | select(.title == "QA")')
MS_number=$(echo "$MS" | jq .number -r)
MS_state=$(echo "$MS" | jq .state -r)
echo "Found $title milestone with state=$MS_state"
echo ""
issues=$(curl -s "$api_url/issues?milestone=$MS_number" | jq '.[].number' -r)
echo "The following issues are in the QA milestone:"
for i in $issues; do
issue_title=$(curl -s "$api_url/issues/$i" | jq '.title' -r)
echo " https://github/$owner/$repo/issues/$i - $issue_title"
done
echo ""
我找不到任何简单的方法。这对我来说是一种享受:
brew install hub
(在 OSX 上)。Hub 由 GitHub 创建hub issue -M 21 -f "%I,%t,%L,%b,%au,%as" > save_here.csv
查看里程碑时,在 GitHub 上的 URL 中找到问题 #(上例中的 21)。
集线器的文档,特别是格式 (-f) 标志可以在这里找到:https ://hub.github.com/hub-issue.1.html