/github_records_archiver

Backs up a GitHub organization's repositories and all their associated information for archival purposes.

Primary LanguageRubyMIT LicenseMIT

This project is no longer maintained. If you are interested in archiving your user or organization data, please use the purpose-built migration API instead.


GitHub Records Archiver

Build Status Gem Version Coverage Status PRs Welcome

Backs up a GitHub organization's repositories and all their associated information for archival purposes.

What it archives

  • Git data (change history, tags, branches, etc.)
  • Wikis (including change history)
  • Issues and pull request (including comments, current state, etc.)
  • Teams (including members and repository permissions)

Requirements

  1. Ruby
  2. A GitHub personal access token with repo scope.

Setup

If you have Ruby installed, simply run:

gem install github_records_archiver

Basic usage

$ github-records-archiver archive ORGANIZATION --token PERSONAL_ACCESS_TOKEN`

Alternatively, you could pass the personal access token as the GITHUB_TOKEN environmental variable:

$ GITHUB_TOKEN=1234 github-records-archiver archive ORGANIZATION`

Output

The script will create an archive directory, with one folder for each organization.

Within each organization folder, there will be one folder per repository.

Within each repository folder will be the repository content as a git repository.

If the repository has a Wiki, the wiki will be cloned as a wiki subfolder, as a Git repository.

If the repository has issues or pull requests, it will create an issues sub-folder with each issue and its associated comments stored as both markdown (human readable) and JSON (machine readable).

Example output:

├─ archive
├─── organization
├──── repository
├────── README.md
├────── LICENSE.txt
├──── wiki
├────── wiki-page.md
├──── issues
├────── 1.md
├────── 1.json
├─── another organization
├──── another-repository
├────── README.md
├────── LICENSE.txt
├──── wiki
├────── wiki-page.md
├──── issues
├────── 1.md
├────── 1.json

Advanced usage

You may set the following flags:

  • --dest-dir - the destination archive directory, defaults to ./archive
  • --verbose - verbose output while archiving

Additionally, the following commands are also available:

  • delete [ORGANIZATION] - delete the entire archive directory or an organization's archive
  • help - display help information
  • version - display the GitHub Record Archiver version