Distributed Git Client

Currently thinking of an interesting idea to implement on holochain with my team.
I’ve learned from the lisbon hackaton that there are some conversation around the possibility of building a distributed git.

The idea I have is that there will be a git client with holochain being in the background which stores the repo distributedly.

I’m not sure how the fs will be since holochain is more of a database than a file system. I’m thinking maybe ipfs for file system then identity management for holochain?

Would love to discuss this with anyone! :smiley:

Thanks!

3 Likes

You might also wanna check out Pijul, which is a Git contender written in Rust:

https://pijul.org/

You might also be able to learn from the SSB implementation of git. https://git.scuttlebot.io/%n92DiQh7ietE%2BR%2BX%2FI403LQoyf2DtR3WQfCkDKlheQU%3D.sha256

It’s the code for ssb-git, published through ssb-git and pushed to the web through scuttleviewer :slight_smile:

4 Likes

Also, Darcs is a popular git alternative https://en.wikipedia.org/wiki/Darcs

I think this is totally doable with Holochain — after all, a Git repo is just a database of hash-addressed objects, organised into a DAG of change-sets. And what is a Holochain DHT? A database of hash-addressed objects, which can be linked to form a DAG.

I’m also curious about looking at git-ssb, as @ViktorZaunders mentioned, to see how they connected Git to an SSB-based remote.

Some interesting challenges to work through; would love to hear other people’s clever ideas:

  • As with any Git repo, blobs might be inordinately taxing on a DHT. Could a Git LFS storage backend live on a separate Holochain-based ‘blob storage DHT’?
  • Git assumes that every copy of the repo is self-consistent; that is, there’s no uncertainty about where its branch pointers point. If the DHT were treated as a single remote, that breaks that expectation, because it’s possible for two people to advance a branch pointer at the same time and put it into an inconsistent state (conflict detection and resolution coming to Holochain in the future). Does that matter, and if so, what are some alternative designs? Should the DHT even be treated as a single remote?
3 Likes

I recently discovered Radicle, a p2p replication layer on top of git.
It could be a good inspiration to do something similar with holochain. :smiley:
Here’s a short talk about it.

1 Like

I worked on some UI to present the repositories that I claim to have build and of other people I would like to know about their work: https://app.gitix.org

Check out this article on Github vs. Gitlab. Could be interesting for the design of this. |

Make sure to also check out @philipbeadle’s CRISPR. It essentially has an inbuilt Git.