Benny
Benny

Reputation: 185

Getting the issues from a certain milestone in Github

All I'm looking for is a way to get a list of issues for a given milestone. It looks like Github treats milestones a bit like labels in that you can ask for the labels for an issue, but not the issues for a given label.

I know that I can filter my issues by milestone on the Github website, but this traverses multiple pages and I wanted an easy way to see all of the issues for a milestone in a more printer friendly version.

Any tips?

Upvotes: 3

Views: 2617

Answers (5)

Jürgen Weigert
Jürgen Weigert

Reputation: 2728

Given a milestone $title in $owner/$repo, we can list the issues in this milestone using curl and 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 ""

Upvotes: 0

Vishal
Vishal

Reputation: 377

First find the list of milestones using this Then query this api by milestone number for each milestone

Upvotes: 0

Justin Ward
Justin Ward

Reputation: 1

I was not able to find any easy methods. This worked a treat for me:

  1. brew install hub (on OSX). Hub is created by GitHub
  2. cd to the local repo you want to access the origin for.
  3. hub issue -M 21 -f "%I,%t,%L,%b,%au,%as" > save_here.csv
  4. profit.

Find the issue # (21 in the example above) in the URL on GitHub when you are viewing the milestone.
Docs for hub and in particular the format (-f) flag can be found here: https://hub.github.com/hub-issue.1.html

Upvotes: 0

AhmadAssaf
AhmadAssaf

Reputation: 3664

You can use the GraphQL API which is V4. and do something like:

{
  repository(owner: "X", name: "X") {
    milestone(number: X) {
      id
      issues(first: 100) {
        edges {
          node {
            id,
            title
          }
        }
      }
    }
  }
}

Upvotes: 1

Ivan Zuzak
Ivan Zuzak

Reputation: 18762

You could use GitHub's API for this. See here on how to get the list of issues for a repo and notice the milestone parameter. The response you will get is a big JSON document, so you would have to create a small script to pull only the titles of the issues, or use grep, or smething like jq.

Notice also that API responses are also paged, but you can set the paging to be 100 entries per page, which is usually enough. If not, you would again have to create a small script to fetch all the pages (or do it manually).

Upvotes: 1

Related Questions