This is something like what I describe when giving my ad-hoc short-form introduction to Git, where I point out to developers that they already know the core concepts of Git from managing objects in process memory: DAGs, trees, pointers (mutable and immutable)…

Unfortunately, this description uses “post-it note” as the analogy to describe refs, instead of pointing out that in a content-addressable store, the hash is the pointer, and saying that refs are just pointers—that branches are mutable pointers, tags are immutable pointers, and HEAD is (when you have checked out a branch) basically a double-indirect pointer, if you consider branch namespace to be a separate set of addresses from the hashes. (Kind of like a Harvard architecture in that you have two semantically distinct address spaces.)

I kind of expect that there’s a short document along these lines that also assumes that the reader knows what a pointer is. I just haven’t found one yet. Anyone know what I’m missing?

(hey #lazyweb ☺)

Git for Computer Scientists

Imported from Google+ — content and formatting may not be reliable