Distributed Git (for real this time) with git ssb

By Ev Bogue - July 26th 2016

For a few months earlier this year I ran Gogs for self-hosted git, which was nice for awhile.

There was only one issue: no one was on there. It turns out running an open source Github alternative is the equivilent of running a ghost town.

While it was fine for my own repos, and it showed the work I was doing, it's hard to get anyone to use your hosted Git service unless there are other people on there.

Around the same time that I installed Gogs, I also began experimenting with Cel's git-ssb

Git-ssb uses Scuttlebot to off a distributed alternative to Github. You use your public/private key to sign commit push messages on your Sbot sigchain, and then you get Scuttlebot gossip the push message and your associated blobs across the network for you.

This means that ssb is not only useful for social networking, it's also useful for distributed Git for real.

To get git-ssb on your machine, you'll need to have the latest versions of Node.js and npm installed.

To install git-ssb use npm, because no distributed package manager exists for Node.js (yet!)

% sudo npm install -g git-ssb git-ssb-web

git-ssb installs git helpers for sbot. You'll also need scuttlebot installed and be in touch with a pub to get on the network.

To create a repo on git-ssb, navigate inside your git repo and type

% git ssb create

This will initiate a new repo for you on the network AND add your git remote too.

To push the git repo type

% git push ssb master

And it will push your repo to ssb. Now your repo is available one gitmx.com without you having to create a username and password on my hosted git service.

The weirdest thing to wrap your mind around with git-ssb is you're not cloning down anymore. Instead you're cloning up. The repo already exists on your local machine, you're just grabbing it from the scuttlebot database and unpacking it on your local machine!

To view the git repos on your ssb network, use git-ssb-web run

% git ssb web
Listening on http://localhost:7718/

And navigate to the local url to see your repos as well as others on your distributed social network.

Themes for Scuttlebot →

← The rise and inevitable liberation of distributed social