https://novalis.org/blog/2016-11-13-analogies-for-git.html Toggle navigation Occasional Thoughts * Archive * RSS Analogies for Git November 13, 2016 I've done some development on Git. I'm pretty proud of it, because it's a tool that powers so much of modern software development. At Practice, I was asked to describe the difference between SVN and Git, and also between Perforce and Git. The answer I gave goes like this: "A Guide to SF Chronophysics" describes four types of time travel plots. Type 1 is deterministic -- whatever happens, was what was destined to happen. There's only one timeline. Type 3 is the one where someone steps on a butterfly and Trump is elected president. Type 2 is half way in between -- you can change things, but they tend to converge back to the original timeline. And finally, type 4 involves multiple universes -- every change (including time travel) creates a new timeline. SVN is type 1. Git is type 4. When you "amend" a commit in Git, you actually create a whole new commit, forking off from the same parent as the previous one. You can use your time machine's "reflog" functionality to see the old one. Similarly, rebase creates a new timeline from some point in the past. Perforce, I'm told, is somewhat like git, but it treats changesets rather than snapshots ("commits" in gitspeak, although in ordinary usage the term commit often refers to a changeset) as fundamental. This is an instance of the mathematical notion of duality. The first example of duality I learned was polyhedra: if you swap the faces of a polyhedron with vertices, you get a different polyhedron. The dual of a cube is an octahedron (known by gamers as a d8). Instead of six faces and eight vertices, it's got eight faces and six vertices.. The dual of a dodecahedron (d12) is an icosahedron (d20). The dual of a tetrahedron (d4) is itself. The Japanese addressing system is almost a dual of the US addressing system. In the US, we give addresses in terms of strees. In the Japanese system, blocks are the fundamental unit. I have been meaning for some time to design a game around the concept of duality, but I have not yet figured out quite how to do it. Anyway, the graph of changesets is just the graph of snapshots with the vertices and edges swapped. Duality. --------------------------------------------------------------------- Next post: Underground Airlines and the point of democracy Previous post: Against generality Hello This is a blog by David Turner. Search [ ] [Go] Recent Posts * Surfwords update * Dev diary: Surfwords * Perhaps The Stars * Pottery, at the beginning of 2020 * A problem I don't know how to solve * Ceramics update * Variance and dynamic range in Lost Cities and Keltis * Visual cryptography * Set Tactics * Robust game designs --------------------------------------------------------------------- Powered by Plerd.