Hacker News new | ask | show | jobs
by ursus_bonum 3374 days ago
This is such a classic example of not thinking things through.

The graphical manipulation stuff sounds cool until you think about what happens when it causes merge conflicts. I mean the graph stuff is still cool but it does very little for the hard problems.

The automatic committing for WIP and "magic" pushing/fetching sounds cool until someone switches branches and accidentally commits 3.1TB of junk files they left lying around and it automatically syncs to EVERYONE else on the project.

People complain now that Git is "too complex" just wait until it's automagically doing shit like that.

2 comments

This is spot on. I have observed this very thing happen with co-workers who abuse git aliases to "avoid git complexity." They have an alias for, say, "add everything, commit and push" and they end up committing all kinds of random files to the repository. Or with another alias, they manage to merge random branches into their working branch and they don't understand how that happened.

Another example is the VS Code "git sync" button. I'm never quite sure what's going to happen if I press it. Will my branch get merged with upstream? Or rebased? Am I going to end up with the working tree in the unpredictable state?

This is where the Python guideline "explicit is better than implicit" applies to git perfectly. Git already does a substantial amount of work under the hood with porcelain commands. There is no benefit of stripping git off the fundamental concepts like branches, remotes and staging. It doesn't simplify the conceptual understanding of git, but only obscures the git behavior.

> VS Code "git sync"

pull† + push, that's it, nothing more.

† that is fetch + merge or fetch + rebase depending on the branch.<branchname>.rebase git config entry

Strongly disagree, the software should always list/show the files being commited in a little pop-up, if you see it is comitting a lot of files or something very big you should be able to press a "cancel" button; you know, like a regular OS file-copying dialog works.
Having worked with people who use these types of magic GUI tools that "hide the complexity" of $VCS, this shit happens all the time.

When they exist, popups are clicked through and ignored just as they are in every other computing context. And in the end, these tools are just a shorthand for "I don't have the time, desire, and/or motivation to understand how to operate the tools I rely on for work."

Not to argue that that perspective is bad or wrong, it just is what it is. And when someone doesn't understand a tool that operates an inherently complex system, it will inevitably lead to misuse.

That's fine but the article doesn't mention any popups. It just makes it sound like all of this will happen in the background without bothering the user.