this post was submitted on 04 Apr 2024
1108 points (98.3% liked)
Programmer Humor
19572 readers
1533 users here now
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
@agressivelyPassive @technom That's a self-fulfilling prophecy, IMO. Well-structured commit histories with clear descriptions can be a godsend for spelunking through old code and trying to work out why a change was made. That is the actual point, after all - the Linux kernel project, which is what git was originally built to manage, is fastidious about this. Most projects don't need that level of hygiene, but they can still benefit from taking lessons from it.
To that end, sure, git can be arcane at the best of times and a lot of the tools aren't strictly necessary, but they're very useful for managing that history.
Yup, once you can use git with good hygiene, it opens up the door to add in other tools like commitizen and semantic-release, which completely automates things like version number bumps and changelog generation.
I fucking hate auto-generated changelogs, so I consider that a downside.
I'd still argue, that the overhead is not worth it most of the time.
Linux is one of the largest single pieces of software in existence, of course it has different needs than the standard business crap the vast majority of us develop.
To keep your analogy: not every room is an operating room, you might have some theoretical advantages from keeping your kitchen as clean as an OR, but it's probably not worth the hassle.
To keep your analogy, most people's git histories, when using a merge-based workflow, is the equivalent of never cleaning the kitchen, ever.
No, it's not. And you know that.
Seriously, ask yourself, how often did the need arise to look into old commits and if it did, wasn't the underlying issue caused by the processes around it? I've been in the industry for a few years now and I can literally count on one hand how often I had to actually look at commit history for more than maybe 10 commits back. And I spend maybe 10min per year on that on average, if at all.
I honestly don't see a use case that would justify the overhead. It's always just "but what if X, then you'd save hours!" But X never happens or X is caused by a fucked up process somewhere else and git is just the hammer to nail down every problem.
Literally every single day. I have a git alias that prints out the commit graph for my repositories, and by looking at that I can instantly see what tasks my coworkers are working on, what their progress is, and what their work is based on. It's way more useful than any stand-up meeting I've ever attended.
I've been in the industry for nearly 15 years, but I can say that the last 3 years have been my most productive, and I attribute a lot of that to the fact that I'm on a team that cares about git history, knows how to use it, and keeps it readable. Like other people have been saying, this is a self fulfilling prophecy - most people don't care to keep their git history readable, so they've only ever seen unreadable git histories, and so they think git history is useless.
What overhead? The learning curve on rebasing isn't that much steeper than that of merging or just using git itself. Take an hour to read the git docs, watch a tutorial or two, and you're good to go. Understand that people actually read your commit messages and take 15 extra seconds to make them actually useful. Take an extra minute before opening an MR to rebase your personal branches interactively and squash down the "fixed a typo" and "ran isort" commits into something that's actually useful. In the long run this saves time by making your code more easily reviewable, and giving reviewers useful context around your changes.
No, having a clean, readable git history literally saves my team hours. I haven't had to manually write or edit a changelog in three years because we generate it automatically from our commit messages. I haven't had to think about a version number in three years because they're automatically calculated from our commit messages. Those are the types of things teams sink weeks into, time absolutely wasted spent arguing over whether this thing or that is a patch bump or a minor bump, and no one can say for sure without looking at diffs or spinning up multiple versions of the code and poking it manually, because the git log is a tangled mess of spaghetti with meatballs made of messages like "finally fixed the thing" and "please just work dammit". My team can tell you those things instantly just by looking at the git log. Because we care about history, and we keep it clean and useable.
I gotta say, I was with you for most of this thread, but looking through old commits is definitely something that I do on a regular basis... Like not even just because of problems, but because that's part of how I figure out what's going on.
The whole reason I keep my git history clean and my commit messages thoughtful is so that future-me (or future-someone-else) will have an easier time walking through it later, because that happens all the time.
I'll still almost always choose merge instead of rebase, but not because I don't care about the git history-- quite the opposite, it's really important to me in a very practical way.
@agressivelyPassive You should still clean your kitchen though, that's my point.
Did I say anything otherwise?