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
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
- Ruby
- 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 archivehelp
- display help informationversion
- display the GitHub Record Archiver version