3 ms·
I also hope we are not done making better and better tools, but to make something better, you need find some gap in current technology and fix it. That's what I
by andersonmvd 11y ago
I also hope we are not done making better and better tools, but to make something better, you need find some gap in current technology and fix it. That's what I am asking: which are the gaps fixed by this VCS? Or in simple terms, why should I switch?
- mitchtbaum 11y agoI personally like very much how Golang and Rust have started to make low-level (mostly old and very important) applications more maintainable for a wider range of contributors (and readable for me); I see (coreutils)[0] as a great example. Also, I would throw Lua into that mix too, at least on some level. As it applies to this particular case, for instance, a repo object management function for lua-git, git implemented in Lua, (`Tree:checkout(path)`)[1] seems like something I could understand. I failed to find git's checkout function, even with a good bit of energy put into it. 0:https://github.com/uutils/coreutils https://github.com/uutils/coreutils 1:https://github.com/mkottman/lua-git/blob/d64218a227fe26b1fc971a8802f74a1921e0187e/lua/git/objects.lua#L84 https://github.com/mkottman/lua-git/blob/d64218a227fe26b1fc9...
- WorldMaker 11y agoGit is a representation of history as a directed acyclic graph (DAG) of commits full of trees that are the state of the repository at the time of the commit. That DAG is strictly ordered (commits point to their parents and this is part of their identity so changing a commit parent makes a new incompatible commit). Darcs (which predates git, by the way) represents a repository as a loosely ordered set of patches (just the changes, not the full state at any given time). Darcs works to know how to rearrange patches in time to create new states. The difference/benefit to this approach is best illustrated with cherry-picking: in Darcs it is very easy to state that I want the patches my fellow developer created for modules X and Y, but I don't think he's done with module Z yet so I'm going to skip those. The patches can be interleaved and recorded in any order and Darcs will do all the hard work of figuring out how to grab just the ones I want, and do so without changing the physical identity of those patches (they are still the same patches my coworker developed). When this works, and it works 98% of the time without an issue, it is a wonderful magic. (Contrast this to git cherry-pick which builds new commits and is likely to have future merge issues with the commits it was built from, even those commits are somewhat "the same".) Pijul is an attempt at getting some of the same magic of a patch-oriented approach (and smarter patch merging) in a post-git world. Also, it's definitely early to talk about switching to Pijul.