Love this work!
Love this work!
I think this is important because people are so quick to jump on the "git is bad" contrarian meme. Git is a fantastic piece of work and the CLI has a variety of issues. On top of this, git is conceptually unintuitive, so the CLI issues make for a worse experience.
Having commands for each DAG operation will just add more complexity and expose a structure which you shouldn't be handling manually.
Once you understand this, Git really does become simple. All you have to do is map each command to the actual operation on the DAG.
This video really explains it quite well, it's the one video that allowed me to fully grasp everything: https://www.youtube.com/watch?v=1ffBJ4sVUb4
So the next major step in VCS technology will most likely do something to help linearize our views and reduce the tangling that comes into play with any tree or graph structure.
a) Most people’s git workflow might as well be linear.
b) rebasing a development branch onto master literally linearizes it
Where git shines though of course is where you can’t get away witha linear model
So if you will pardon the paraphrase, I think the main problem is that many developers don’t take the time to simply learn git.
Git's use of a DAG is confusing and unfamilar for many programmers, though in reality it's beautiful and simple.
The difference relative to functional programming is that you get paid for one and the other is just a tool
Git is quite elegant if one has a good grasp of graph theory.
But this might be a good study in why Linux is not taking over the desktop, and unlikely to do so in foreseeable future.
You have two pills. Or you know few basic DAG concepts, or you need to know a lot of "semantic" VCS commands.
I bet you have no problem in remembering what git pull, git checkout, git add, git commit and git push do, isn't it? For everyday work it's enough. You have problem in mastering git, all these nifty logs, diffs, indexes, refs, heads, remotes and other stuff. Other VCS have complex concepts too besides checkins.
Whatever technical advantages of Git are (and technically it is good), I think it fails as a tool to let me do my job easier.
This is just 'your use-case is wrong'.
It is supposed to be, but I am not sure it delivers on that part. That’s another discussion, but for instance I wouldn’t bet on having a random 10 yo kid understand OO beyond the bare Cats and Dogs tutorial everyone goes through at first.
And that’s what I would say about git as well. Even after knowing the internals and how it is supposed to work, I still feel that for a tool it’s pretty unelegant and puts a significant burden on the user to know what needs to be done in what situations.
Excellent. I responded to the comment that claimed "deep problems in its conceptual design".
> have no idea how to get git to DO it.
Yes, the ergonomics of git could be significantly better. Branches vs tags, manipulating local refs vs remote refs, etc.
https://jneem.github.io/merging/
https://pijul.org/model/#why-care-about-patch-theory
Unfortunatly Gitless doesn't solve them.
But Pijul solve many problems of Git (and Darcs) and is easier to use.
I've basically given up on using early access pijul. I've had a problem with each of the last three versions, primarily pushing to Nest. It wouldn't be an issue if I could install pijul on NearlyFreeSpeech (because then I could self host on a known good version). I want pijul to succeed, its patching model sounds good. Clearly, it's working for some group of people. But I'm not one of them, and it's past where I feel like I'm wasting my time. I'll try again when they're v1.0