Improving git was obviously the first thing we considered, given the work needed to create a new VCS.
Unfortunately, git does not save enough information to make this possible, but with an extra “helper” file to help preserve the missing info, why not?
I don’t see any obvious way to make this fast, except maybe by keeping both repositories locally, and keeping them synchronised. Of course, this would void some of the cool guarantees that come for free in pijul, and which every git user tries to simulate with git (such as using branches to simulate commutativity).
My personal answer to “switching would be hard” is that:
-
people are afraid of the change because they remember how Git was (and still is) hard to learn. Pijul doesn’t have that problem, even though I’ve noticed newcomers try to use it as if it were Git, for instance creating tons of branches instead of just (commuting) patches.
-
I do agree that Pijul doesn’t yet have all the tooling and integration that has been developed around Git, but I also believe that Git needs lots of these because it doesn’t provide any intuitive guarantee (such as associativity or commutativity), and no intuitive sane internal representation of conflicts. This means that users keep trying to make it behave sanely by adding commands (I’m looking at you, “git rerere”), whereas Pijul gives them for free. I would expect 90% of Git users to never do a manual rebase, for instance, yet wish that commits commuted. Also, I wonder what fraction of Git users have ever used more than four commands (commit, push, pull, maybe reset?). For instance, the few contributions I’ve made to NixOS, an extremely large project versioned under Git, were not as easy as they could have been because my local copy is heavily edited (with changes I’m not yet ready to share), and I need to navigate the history constantly to branch just at the right time that would allow me to both (1) contribute clean PRs and (2) have a local version with all my changes.