/github_issue_exporter

A command line utility for exporting Issues from GitHub

Primary LanguageRubyMIT LicenseMIT

GitHub Issue Exporter

Circle CI Code Climate

Need to archive some repositories that are stored on GitHub? Great. Don't forget to hold on to any open issues you may still have. GitHub Issue Exporter is a command-line utility that will download all the open issues for a single repository.

There's also another executable for importing those issues back into a repository, so you can resurrect an archived repository with all of its issues.

Installation

GitHub Issue Exporter is built with Ruby and needs Ruby 2.0 or higher. Install it with RubyGems.

gem install github_issue_exporter

Some environments may require sudo permissions.

sudo gem install github_issue_exporter

Usage

There are two executables, export-github-issues and import-github-issues. Both reneed at least three things to run, the owner of the repository, the repository name, and an access token that has the authority to download the Issues. You can generate this token from here, and clicking on "Generate new token". Here's a blog post with some more of the details involved.

export-github-issues

The Exporter has a couple of options.

--multiple-files By default Issue Exporter downloads and stores all the issues into a single JSON file. Setting the multiple-files flag will create a separate file for each Issue.

--output Set the directory to store the issues in. By default it is the current directory.

--output-type Sets the filetype to output. Current options are file (the default) and csv. The multiple-files flag will only work with file.

--closed By default, only Open issues are exported. Adding this flag will include Closed ones as well.

The issues will be exported into either a single issues.json file or multiple issue-[NUMBER].json files.

Example

export-github-issues tallwave github_issue_exporter [TOKEN]

export-github-issues --closed tallwave github_issue_exporter [TOKEN]

export-github-issues --multiple-files --output ~/issues tallwave github_issue_exporter [TOKEN]

export-github-issues --output-type csv tallwave github_issue_exporter [TOKEN]

import-github-issues

You can import issues a couple of different ways. First is to provide the name of each JSON file created by the exporter.

import-github-issues issues.json more-issues.json tallwave github_issue_exporter [TOKEN]

Or you can use the --directory flag and load all the JSON files in the specified directory.

import-github-issues --directory ~/issues tallwave github_issue_exporter [TOKEN]

Importer Notes

  • Issues will be added to the repository as if they were brand new, so old issue numbers will not be used.
  • If your user does not have push access to the repository, assignees, milestones, and labels will not be set. Read more in the GitHub documentation.

Development

This sees sporadic development but here's some info if you're interested:

Testing

You'll need bundler installed. Run bundle install --binstubs to install dependencies and test binaries. You can then execute the specs with bin/rspec from the root folder.

Roadmap

  • Better error handling.
  • Properly import closed issues.
  • Create a GitHub 'application' so that the user doesn't need the auth token.

Contributing

  • Fork
  • Make it better
  • Create a Pull Request