Skip to content

Instantly share code, notes, and snippets.

@schacon
Created May 14, 2009 04:09
Show Gist options
  • Select an option

  • Save schacon/111475 to your computer and use it in GitHub Desktop.

Select an option

Save schacon/111475 to your computer and use it in GitHub Desktop.
Git is an open source, distributed version control system implemented
as a directed acyclic graph of commit objects pointing to snapshots
of content, with all data saved in it's own custom content addressable
filesystem by the SHA-1 checksum hash of each objects data. branches
are simply pointers into this directed graph of commits, identifying
entry points that designate the latest work on that branch, allowing
Git to traverse the pointers, determining a coherent history.
this makes branching cheap and easy, and merging simple, encouraging
non-linear development styles and frictionless context switching while
facilitating distributed development, cryptographic integrity and late
decision making. nearly all commands run locally with no network
latency overhead and it is implemented mainly in C, making it
incredibly fast and efficient even for very large projects. There
are several large open source projects using it, not to mention the
100,000 open source repositories maintained by the 80,000 developers
on GitHub alone.
Chances are if you are using another source control system,
you should learn more about Git and consider switching to it.
So, now that we're all on the same page on Git, I'm going to cover
GitHub a bit.
What is GitHub? GitHub is a Git-based source code hosting website
where anyone can freely and openly host their various projects source
code; and other users can find them, use them and help improve them.
A lot of people and companies use us for hosting their private and
open source projects, and we hope you also do.
This talk is to show you how we have used Erlang to help us manage
the rapid growth of our community in the numbers of projects and users
in the last year.
Originally, we used a few webservers running Git commands on a shared
filesystem over GFS. Due to the nature of GFS and the high IO needs
of Git, this began to break down - it would not scale. We decided to
move to an RPC system, where we would federate our repositories over
multiple backend servers and run commands over RPC from any frontend
system, allowing us to scale either tier independently.
We used Erlang for that RPC system, and here is Tom to show you how.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment