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.)
Requirements
- Ruby
- A GitHub personal access token with
public_repo
andrepo
scope.
Setup
git clone https://github.com/benbalter/github-records-archiver
cd github-records-archiver
gem install bundler
bundle install
Usage
bin/archive [ORGANIZATION]
You'll want to set the following environmental variable:
GITHUB_TOKEN
- Your personal access token
You may set the following environmental variables:
GITHUB_ARCHIVE_DIR
to specify the output directory. It will default to./archive
.GITHUB_ORGANIZATION
- The organization to archive if none is passed as an argument.
These can be passed as GITHUB_TOKEN=123ABC GITHUB_ORGANIZATION=whitehouse bin/archive
.
You can also add the values to a .env
file in the project's root directory, which will be automatically set as environmental variables.
Output
The script will create an archive
directory, with one folder for each repository.
Within each 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 individual markdown files.