Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/benbalter/github_records_archiver

Backs up a GitHub organization's repositories and all their associated information for archival purposes.
https://github.com/benbalter/github_records_archiver

backup data-liberation data-migration data-portability export github

Last synced: 14 days ago
JSON representation

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

Awesome Lists containing this project

README

        

**This project is no longer maintained. If you are interested in archiving your user or organization data, please use the purpose-built [migration API](https://developer.github.com/changes/2018-05-24-user-migration-api/) instead.**

---

# GitHub Records Archiver

[![Build Status](https://travis-ci.org/benbalter/github_records_archiver.svg?branch=master)](https://travis-ci.org/benbalter/github_records_archiver) [![Gem Version](https://badge.fury.io/rb/github_records_archiver.svg)](http://badge.fury.io/rb/github_records_archiver) [![Coverage Status](https://coveralls.io/repos/github/benbalter/github_records_archiver/badge.svg)](https://coveralls.io/github/benbalter/github_records_archiver) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)

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](https://github.com/settings/tokens/new) with `repo` scope.

## Setup

If you have Ruby installed, simply run:

```shell
gem install github_records_archiver
```

## Basic usage

```shell
$ github-records-archiver archive ORGANIZATION --token PERSONAL_ACCESS_TOKEN`
```
Alternatively, you could pass the personal access token as the `GITHUB_TOKEN` environmental variable:

```shell
$ 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