Live data from Hacker News

Gitless: a version control system

gitless.com

171–180 of 390 posts

Re: Gitless: a version control system

#171
post #163

Earlier quoted context omitted.

I'm quite comfortable with git now but I also remember what a pain it was to learn. This included making mistakes and diving deep into git's internals to recover. The question is whether we should make things easier for new versus experienced developers? If switching to gitless became a thing I'd have to learn something new, but if it made things significantly easier for beginners, maybe my personal inconvenience isn…

Version control is arguably confusing for beginners, but building a shim instead of learning the tool isn't the answer in my head. I always struggle with "lowering the barrier of entry" and it's not a "I did it they need too do it" it's more of a "Usually high barriers mean it's complex, and learning how to understand complex things is important." If this was some new novel way to version that wasn't just pretty git,…

I don't understand this rationale. Are you saying that Git's UI is perfect, and there's no improving it? It's not, and gitless does, indeed, improve on it.

We should be celebrating better UIs over important tools, not saying "I made great effort to learn it, therefore learning it with less effort is inferior". No. If it does everything Git does, but more easily, it is strictly superior.

Re: Gitless: a version control system

#172

Earlier quoted context omitted.

Not really. Mercurial doesn't use `checkout` in that way (it's an alias for `update` which updates the working copy to a specific changeset — or the tip of the current branch, the hg version of TFA's checkout is `revert`), prints a list of revisions with `log` and uses `add` and `remove` to track and untrack files. It doesn't match Darcs's CLI either.

I meant more from the perspective that it wraps a more friendly CLI on top of a DAG of commits. Didn't mean that it's 1:1 copying Mercurial :)

Well then it's copying more or less any DVCS which is not git, git(1) is the least friendly DVCS CLI I know of.

Re: Gitless: a version control system

#173
post #102

Git is, like many professional tools, something you simply got to learn. But like with many professinal tools, you don't need to know everything to get to work. I don't know all Photoshop or Ableton Live features, but I can improve my photos or create songs non the less. With these commands you can already start your own repo and work on it locally: git init // crate new repo git status // show which files are change…

I don't think those commands are remotely sufficient to work with git. You're forgetting about merging, traversing history, branch creation, remotes, grokking the staging area, etc. I'm sure I'm missing a lot as well, because those of us who have worked with git for a long time take these things for granted. And it does frustrate me that it's so complex, because Mercurial shows us it doesn't have to be this way. Unfo…

How are they forgetting merging, remotes, etc? The commands are literally on the front page. The only thing it doesn't have is a staging area, which is a conscious decision that I happen to agree with.

Re: Gitless: a version control system

#174
post #161

Earlier quoted context omitted.

Someone makes a project trying to make something easier to learn (so, trying to make the world a better place), and you call it "extremely pointless", you tell them they "don't understand Git", they're "brain-damaged", "erroneous", they should "take the time to understand their tools", because the tools are "not complicated" and "incredibly simple". Besides your arrogant "I'm right, you're stupid and wrong, and there…

>Someone makes a project trying to make something easier to learn (so, trying to make the world a better place) Again, spare me the hyperbolic the "trying to make the world a better place." The principle behind my post, as given in my very first statement is that they basically failed. They are gearing people towards failure. It would have been better to just create a thin layer on top of git with slightly renamed or…

I am not talking about a toolset. I'm talking about how I believe you have a "I'm right, you're stupid and wrong" attitude. So I'm not disputing your opinion about Gitless, I'm criticizing how you presented it. I don't think the sentiment is ridiculous, because I think it's correct; clearly if you write it off as ridiculous then we're just talking past each other. Similarly, I don't think I am labeling you in a negative light for "no reason": the reason is that you are acting in a way that I think deserves to be called out negatively, so as to hopefully dissuade you from acting that way.

I do happen to think Gitless is a noble effort that will not change the world or be adopted by much of anyone, as with many interesting projects that are posted here, but I still think you should be non-hostile towards it, and sympathetic instead of dismissive towards the problem it is trying to solve (since clearly there are heaps of people who feel the same way, as evidenced by these and many other comment threads).

Re: Gitless: a version control system

#175

Earlier quoted context omitted.

I disagree. It's one of the best command line tools I've seen. It detects errors, gives you suggestions and you can get along with a few basic commands. Yes, there are multiple steps, but that's okay because it can't figure out your intentions. Look: http://imgur.com/xY8dKWD no verbosity here and this is 99% of my git workflow. Working in a team is more tricky, but you should use and IDE with built in git support. If…

This is not objective. Git CMD has terrible flaws that are easily spotted as soon as you start teaching git, because you can see people struggling on difficulties purely created by a bad design. As a professional trainer, here are the most commong problems: - git checkout does so many different things. Git check file, git checkout branch, git checkout commit all do different stuff, and don't get me started on the opt…

> stashing is dangerous. I've seen many students loosing work with a stash pop requiring a merge which ended badly.

`pop` will no longer drop the stash if there is an error applying it; it did in the past.

There is a point where it is worth having at least one person on a team study the internals of Git vs. struggling with it constantly and possibly losing work---it will save time, energy, and work in the long run.

In the stash case, `git reflog` would immediately allow you to recover the lost stash. If you're in deep shit, `git fsck` is valuable until the commits are GC'd. Even if you don't remember the commands, you'll know where to look for them, or what to search for to find it. Or even understand that it's _possible_.

> nothing in the tool gives you enough context if you don't explicitly ask for it, which supposes you need to know you need it, and what "it" is.

There are numerous PS1-augmenting scripts available; git even comes with one. But I agree that it otherwise would be incredibly frustrating for beginners.

> branch switching is a hard

I've heard many criticisms when watching others learn Git and teaching others, but this is one of the only things that never comes up once they've done it a couple times. Stash and switch. Or commit WIP and switch.

> the whole syntax is impossible to discover, even for very common tasks: git checkout HEAD^ /file/path, git rm --cached, etc.

I learned pretty much everything I know about Git from experimentation and, most importantly, the manpages. If someone is unaware of manpages, the documentation is online. Failing to read is failing to discover, yes.

> git assumes you know what you are doing. Which means it let you destroy history with rebase, loose stuff with stash pop, create detached head, make force push, and all it all put yourself in many situations a beginner won't understand, and above all won't need.

Yes, this is fair. But also essential. I have recovered from more fucked situations that I could have imagined, and have helped others do the same---situations where I would have otherwise lost work.

But it's a matter of teaching someone fallbacks. If you accidentally screw up everything with a rebase on , `git reset --hard origin/`. If you can't remember that, open tig / gitk / a web interface / etc, find the hash, and reset to it. If you are on a detached head, check out a branch. You shouldn't be force pushing, but that's nothing the manpage can't help with.

It all comes back to the basic understand that nothing is ever deleted in Git until garbage collection. There is always a hash to recover. Sometimes I just lazily scroll up in my terminal and grab it.

But your first point:

> git checkout does so many different things. Git check file, git checkout branch, git checkout commit all do different stuff, and don't get me started on the option flags

Yes, this is unfortunate.

tl;dr: Research your tools! Poke around the manpages or online. Know what you don't know so that you know where to look later. And there is always e.g. gitk to fall back on for certain things---I see others on my team do that as well.

Re: Gitless: a version control system

#176
post #174

Earlier quoted context omitted.

>Someone makes a project trying to make something easier to learn (so, trying to make the world a better place) Again, spare me the hyperbolic the "trying to make the world a better place." The principle behind my post, as given in my very first statement is that they basically failed. They are gearing people towards failure. It would have been better to just create a thin layer on top of git with slightly renamed or…

I am not talking about a toolset. I'm talking about how I believe you have a "I'm right, you're stupid and wrong" attitude. So I'm not disputing your opinion about Gitless, I'm criticizing how you presented it. I don't think the sentiment is ridiculous, because I think it's correct; clearly if you write it off as ridiculous then we're just talking past each other. Similarly, I don't think I am labeling you in a negat…

>I'm not talking about a toolset.

Then leave the thread, because that's what this thread is about.

> I'm talking about how I believe you have a "I'm right, you're stupid and wrong" attitude.

Incredibly misplaced belief.

>So I'm not disputing your opinion about Gitless, I'm criticizing how you presented it.

And you felt the need to completely exempt yourself from this criticism. Can't say I'm shocked at this point.

>I don't think the sentiment is ridiculous, because I think it's correct;

I am not sure what the point of saying this was, other than you really seem hellbent on derailing this. So, as per the last sentence in my previous post, you're both a hypocrite and a troll.

>clearly if you write it off as ridiculous then we're just talking past each other.

You aren't saying anything, so that's impossible to do.

> the reason is that you are acting in a way that I think deserves to be called out negatively, so as to hopefully dissuade you from acting that way.

Don't worry, not only am I here to correct the fact that people shouldn't post anything close to what you've been doing in this thread, I'm going to hammer the fact that you're an oblivious, hypocritical troll as well as the fact that there's a downvote button for this exact reason if you really felt that way. But clearly you have other motivations. Your post is pointless, inflammatory, and really deserves a look from a moderator at this point.

I'm not going to respond to you anymore past this.

Re: Gitless: a version control system

#177
post #163

Earlier quoted context omitted.

Version control is arguably confusing for beginners, but building a shim instead of learning the tool isn't the answer in my head. I always struggle with "lowering the barrier of entry" and it's not a "I did it they need too do it" it's more of a "Usually high barriers mean it's complex, and learning how to understand complex things is important." If this was some new novel way to version that wasn't just pretty git,…

I don't understand this rationale. Are you saying that Git's UI is perfect, and there's no improving it? It's not, and gitless does, indeed, improve on it. We should be celebrating better UIs over important tools, not saying "I made great effort to learn it, therefore learning it with less effort is inferior". No. If it does everything Git does, but more easily, it is strictly superior.

Well-said. We also know that git was originally hacked together in two weeks after Torvalds had to ditch the better-designed product they were using, Bitkeeper. It's almost as if a bunch of Linux developers kept hacking stuff into it with no concern for UX and telling people they were idiots if they didn't like mastering unnecessary complexity.

Meanwhile, unlike Git, I understood most of Gitless's commands before the tutorial started explaining them. Opposite experience I got with Git tutorials where I kept questioning why it would be done a certain, unintuitive way. This is definitely an improvement.

Re: Gitless: a version control system

#178

Git needs the parent pointer equivalent of NIL. Whenever I start a blank new repo nowadays, I do a git commit --allow-empty -m "NIL" See, many git operations require a parent reference! For instance if you want to interactively rebase the top commit, it's actually "git rebase -i HEAD^": rebase back to (but excluding) HEAD's parent. The equivalent "git rebase -i HEAD~1" means the same thing: that ~1 actually spans two…

    Git needs the parent pointer equivalent of NIL.
    Whenever I start a blank new repo nowadays, I do a
Sounds like you've already got one...

Re: Gitless: a version control system

#179
post #121
post #108

Earlier quoted context omitted.

> Git is, like many professional tools, something you simply got to learn. Nailed it.

Agreed. I'm seeing terms like "elitist" being thrown around below for "git apologists" when it's simply a matter of learning a tool. Not everyone needs all the power of the git CLI and the complications it brings - but when you do need it, it's there to fix the dumb things we all do sometimes. I think if you look deep in the guts of Clearcase for example you will see nastiness that makes git look like the ls command.

" I'm seeing terms like "elitist" being thrown around below for "git apologists" when it's simply a matter of learning a tool."

Some tools people encounter seem unintuitive and have a steep learning curve. Others that do the same thing are super easy to understand and learn. Git vs Gitless is a good example where Gitless instantly clicked with hardly a thought. That means it was a superior interface. That also means anyone telling people they need to suck it up and just accept bad interfaces that smart people were able to learn with enough wasted energy is a bad idea.

Reminds me of those guys when I first started dealing with Linux who told me I was just being slow or lazy for expecting an installer that just required a little bit of input like I had with Windows. Anyone should know everything about handling partitions, configuration of low-level graphics, init systems, whatever. These days, the installers are point-and-click for average case while including options for others. So, why did the Linux people tell me that early on? They were elitist snobs peddling bad UI's and seeing no value in good ones. That simple.

Re: Gitless: a version control system

#180
I see gitless has a bunch of 'gl ____ -c foobar' as well. Why is the -c (create?) needed? Isn't it apparent that if that branch doesn't exist we need to create it? If that remote doesn't exist we need to create it?

Convention over configuration?

Post reply on HN