Why we built BackHub to save money on our GitHub plan

Initially we’ve built an alpha version of BackHub, because we needed it in our day to day work. Since we realised that we are not the only ones who need backups of running projects and a way to archive our inactive repositories, we’ve decided to offer our tool as a service.

We have been using GitHub over two years now and it has become a linchpin in our project development process. GitHub is the place where we communicate, from epics and stories to actual tasks, from product specifications to the definition of done.

Considering that all our business value is in the cloud, placed in a proprietary system we can’t control, we needed a program that would give us additional safety to preserve our work. We could install GitHub Enterprise on our own servers but it’s just not profitable for a small team like us.

We need BackHub because we want:

  • Backups of all Repositories including all meta data (Issues, Milestones etc. because they contain valuable information)
  • Archive inactive projects to have space for new ones.

Backup Repositories

Unlikely, but what if the universe is conspiring against us and our repository, and all local copies are unaccessible? What if all our issues and milestones (which have no versioning) are being changed or deleted? What do we do if one of our team members passwords get leaked and our projects are being deleted or destroyed?

There are many solutions for backups out there, but most of them can’t backup private repositories and none of them are able to restore backups properly.

Besides the code itself (which is quite safe due to Git and local copies of each repository), there is also metadata around a repository. For us, this is almost as valuable, since we use them to write our stories and tasks using milestones and issues.

Milestones, issues and comments don’t have versioning, hence principally everyone on the team or with access to our repository could delete valuable information. That`s why we needed a solution that not only backs up code, but all the metadata associated with it.

Backups of all the value, repository and metadata, gives you peace of mind and keeps you independent.

Archive Repositories

Since we do client work, we are not only working on one big thing, but develop many small projects, deliver them and go on with the next one.

Most of these projects need very little maintenance or are handed over to an external company taking care about maintenance of the product or website. In this case we transfer ownership of the repository, but still want to keep a local copy of the project for the records.

Besides code, especially the metadata contains valuable information and is not included in regular backups or local copies of a repository:

  • Issues: what was done and by whom, which commit refers to which story or task
  • Milestones: when and what did we deliver and in our case, since we use milestones as SCRUM stories: which issue referred to which story
  • Wiki: all the information associated with a project, specifications, definition of done etc. Once a project is inactive, we don’t need to keep it at GitHub and don’t want it to count against our private repository quota. If it were so, we’d need a larger plan every couple of month due to the nature of our business model and to how we work.

Thanks to BackHub which backs up code and all metadata associated with it, we delete such repositories on GitHub and just restore them in case we need to do maintenance or want to develop a inactive project further.

Archiving inactive repositories enables you to keep your GitHub account clean and eventually save money on your plan.