The Supercomputing 2021 conference has a Discord server with about sixy billion channels. The most active channel by FAR is the one where people try to figure out how the hell to use git.

Our tools are bad and we should feel bad.

· · Web · 3 · 2 · 16

@khm I'm perpetually stuck wondering if Git is fundamentally tricky to grasp, or if it's just the UIs we have for it.

I'm unfortunately now too deep - I've read the Git source, I've written tools in the Git ecosystem, and the mental model of Git largely matches my own, so it *clicks* for me.

Yet still, I see an overwhelming majority of folks I've met struggle with it, and I don't know which angle to even start from on alleviating the pain.

@klardotsh git is a directed graph browser someone mislabeled as a source control mechanism. I'm sure it's theoretically possible to produce a UI with the right abstractions to make it usable, but I'm equally certain someone actually doing it is a practical impossibility.

I don't think it's something that can be fixed; it's just more coprolite embedded into the strata of modern computing, like browsers being the only portable UI toolkit or USB being eighty protocols sharing one connector.

@klardotsh @khm

Git made more sense to me than svn.

But it also took me years before I would stop getting the repository into weird befuddling states.

As long as I stay on the rails all is good.

@lordbowlich @khm I'd love to dig into what states you got your repos into if you have the time. When you leave the rails, where do you end up? How often?

@klardotsh @khm

It's been several years since I've turned up a knot so I'm not quite sure what I had done. But it would happen every couple of months and I'd need to get the team "git" expert to come by and try to sort out what I'd done.

Largely just sitting on the cli and doing a lot of branching, merging, rebasing, and chery-picking without really knowing what each does until I no longer knew what any branch was doing -- where they branched from or what branches had been merged into what. Then trying to merge the entire mess back into the team's branch.

The solution tended to be to diff the two branches and then manually copy the changes into a fresh branch without any of my mess.

@klardotsh @khm
The correct UI is magit in emacs. Before it I was lost, with it the graph becomes the interface.

@minikomi @khm Alas, I've met like 3 Emacs users in almost a decade of professional development, so while magit has always struck me as cool, I can never really recommend it.

At least in the niches I've worked, the ratio tends to be 80% VSCode, 15% vim, rest is sublime and like, TextMate or other older stacks.

Pulling in Emacs just for magit is probably a stretch to recommend.

@klardotsh @khm

I share the sentiment, it's a terrible platform full of wonderful things.

However, fixing conflicts hunk by hunk in a familiar editor environment with a keyboard-driven, powerful diff interface was worth the climb up the cliff-face learning curve for me.

@klardotsh @khm
Having a look at might be informative regardless of emacs anyway, it's very well explained

@khm Fun fact: Discord's binary protocol over the internet uses Erlang's binary serialization format 🤷

@cancel @khm Since Discord used to be written in Erlang, this is hardly surprising.

@khm I teach git as part of my intro to data science course and a strategy where I introduce `diff` and `patch` first and then explain the repo as (conceptually) a sequence of patches seems to work well.

Git is more of a diff/patch toolset than a version control system, but once you become comfortable with that, it isn't too hard to learn.

I think the problem is most people see it as _tangential_ to their work and that limits the cognitive resources they will use on it.

@khm But I think of git as _foundational_, even fundamental, to my work. From that point of view gits complexity is a modest barrier. But its hard to get people there, no doubt.

Sign in to participate in the conversation
Mastodon @ SDF

"I appreciate SDF but it's a general-purpose server and the name doesn't make it obvious that it's about art." - Eugen Rochko