6 ms·
Git is a generic management tool for a directed acyclic graph, applied to version control. Once you internalize that, everything falls into place, trivially.
by YuriNiyazov 15y ago
Git is a generic management tool for a directed acyclic graph, applied to version control. Once you internalize that, everything falls into place, trivially.
- philwelch 15y agoWhile you're right, and any educated programmer should understand the only technical concept in that statement ("directed acyclic graph"), I can't help but be reminded of "A monad is a monoid in the category of endofunctors, what's the problem?".
- YuriNiyazov 15y agoAs it happens, I am currently studying category theory, so your analogy breaks down for me. Yes, being efficient in this world requires knowing advanced concepts.
- AndrewDucker 15y agoAnd the advantage of things like SVN is _not_ having to understand advanced concepts in order to have your code sitting in a nice versioned repository.
- philwelch 15y agoThe only "advanced concepts" in Git are commits and pointers to commits. Branches are pointers, tags are pointers, commits have pointers to their ancestors, HEAD is a pointer, and so forth. Then you have the working tree, index, and stash. The working tree is just the files in your directory, the index is what you're about to turn into a commit, the stash is what you're hiding from your working tree. If you understand the concept of a linked list you can understand Git with a few minutes of effort, and if you don't understand the concept of a linked list why the hell are you a programmer? Sometimes we need to interface with designers and copywriters, but considering the disadvantages of SVN that's not a hard tradeoff.
- deleted 15y ago[deleted]