Earlier quoted context omitted.
I compare it to 10-15 years ago, when functional programming was rather rare. Mid-level OO programmers would complain it was confusing and unfamilar, whereas in reality has beautiful and simple concepts. Git's use of a DAG is confusing and unfamilar for many programmers, though in reality it's beautiful and simple.
> 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
Gitless: A simple version control system built on top of Git
21–30 of 143 posts
Re: Gitless: A simple version control system built on top of Git
#22Earlier quoted context omitted.
Yeah, but the question is whether a DAG is a good mental model for a VCS. Just because that's the underlying data structure doesn't mean it has to be the user interface too.
Exactly. This seems to be a point that the "Git is easy" crew doesn't understand. Not everyone (in fact, very few) find going into that depth for something that's nothing more than a tool to be reasonable. Reminds me of the Gentoo users that used to say compiling everything is a great idea for an OS.
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.
Re: Gitless: A simple version control system built on top of Git
#23Earlier quoted context omitted.
Can you elaborate on the deep problems? I personally find it relatively conceptually elegant.
I compare it to 10-15 years ago, when functional programming was rather rare. Mid-level OO programmers would complain it was confusing and unfamilar, whereas in reality has beautiful and simple concepts. Git's use of a DAG is confusing and unfamilar for many programmers, though in reality it's beautiful and simple.
Git is quite elegant if one has a good grasp of graph theory.
Re: Gitless: A simple version control system built on top of Git
#24A simple text editor built on top of Emacs.
Re: Gitless: A simple version control system built on top of Git
#25A quick tl;dr of the referenced paper "Purposes, Concepts, Misfits, and a Redesign of Git" (https://spderosso.github.io/oopsla16.pdf):
> The changes made to Git’s concept model are:
> 1. The redefinition of “tracked” and “untracked,” and the elimination of “assume unchanged” and the “staging area.”
> 2. The redefinition of the concept of “branch,” and the elimination of “stash.”
> 3. The creation of the notion of a “current branch,” and the redefinition of “head.
I would agree that most of the delta from git represents an incremental improvement in usability; staging, stashing, and complex ignore rules are all things that are more likely to get in the way of novice to intermediate git users than help them. That being said, I'd classify those usability issues as minor in the overall picture. Most of them are trivial to smooth out either via git aliases or shell aliases - for example, I've had `ignore`, `show-ignored`, and `unignore` aliases for so long that seeing `git update-index --assume-unchanged foo` on the Gitless site made me realize I'd forgotten that that's what my `ignore` alias is actually doing under the hood.
By far the most complex & difficult aspect of using git (and source control in general) is merge conflict resolution. I'm not convinced Gitless offers much benefit in this aspect and in fact I suspect it may actually make things worse. Complex conflict resolution is when the ability to distinguish between staged and unstaged changes is most useful and sometimes even crucial. Furthermore, while Gitless offering capability to 'pause' a conflict resolution by switching to another branch is neat, I would say it's very rare that I need to ever do so in the middle of a conflict resolution. Difficult resolutions require full concentration - if I find myself needing to switch to another branch in the middle of one, the context switch usually renders me unable to pick up where I left off and I wind up starting over to make sure I'm working from a clean slate.
On the whole, I could see Gitless being valuable in academic environments to facilitate desparately-needed use of source control among researchers/postgrads/scientists. But I would steer clear of it in a software development career as I think it would stunt user's abilities to truly master a core tool of their profession in the long run.
Re: Gitless: A simple version control system built on top of Git
#26Earlier quoted context omitted.
Can you elaborate on the deep problems? I personally find it relatively conceptually elegant.
I think that you can find good explanations of these problems here : 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. https://pijul.org
Re: Gitless: A simple version control system built on top of Git
#27Removing staging seems a little odd. To me staging, especially with a GUI like Sourcetree, is almost the best part of git.
Coming from CVS I found Git rather simple. But I have to admit, I mostly used it via Github and as a solo-dev.
Re: Gitless: A simple version control system built on top of Git
#28Earlier quoted context omitted.
I compare it to 10-15 years ago, when functional programming was rather rare. Mid-level OO programmers would complain it was confusing and unfamilar, whereas in reality has beautiful and simple concepts. Git's use of a DAG is confusing and unfamilar for many programmers, though in reality it's beautiful and simple.
> 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
Re: Gitless: A simple version control system built on top of Git
#29Removing staging seems a little odd. To me staging, especially with a GUI like Sourcetree, is almost the best part of git.
Coming from CVS I found Git rather simple. But I have to admit, I mostly used it via Github and as a solo-dev.
Re: Gitless: A simple version control system built on top of Git
#30Earlier quoted context omitted.
Gitless doesn't change anything about git's concepts, it just abstracts away some commands. So if you think this solves the problems, they're clearly not "conceptual" faults. 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…
The other half of the issue is that git's commands don't follow the abstraction. If each command mapped to a single dag operation, it might make more sense. But they don't (revert).
Having commands for each DAG operation will just add more complexity and expose a structure which you shouldn't be handling manually.