If you write commit messages like this, at least have the decency of squashing them when merging. Thanks.
Programmer Humor
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
A PR for every tiny commit. You got it.
Pleasure by William Wallace
What is this life if, full of care,
We have no time to stand and stare.No time to stand beneath the boughs
And stare as long as she allows.No time to see, when woods we pass,
Where squirrels hide deez nuts in grass.No time to see, in broad daylight,
Streams full of stars, get high at night.No time to turn at Beauty's glance,
And watch her gangly feet like once.No time to wait till her mouth can
Fit round that wide hog, whatup fam.A poor life this if, full of care,
We have no time to stand and stare.
Shakespeare may have coined a lot of English words, but only Wallace can claim deez nuts.
cannot believe William Wallace gotem through time
he was fighting the english with his dope rhymes before he ever held the sword
Really neat, but man, wasn't intending to get teary eyed in the meme community 🥹
Yeah me either, so I fixed it
At the very least, please state which section you made small changes to, even if you are sure it's not worth mentioning what or why.
Also, what were you hoping to accomplish? At a minimum, are you fixing a bug? Adding a feature? Cleaning up ugly code? Trying to improve performance? Adding comments to something that wasn't obvious?
Did you change an interface that other people use in a way that might break something? Even if it's fixing a bug, is that a bug that other people might have been relying on?
I think the most problematic changes are the little fixes, because often the CL goes from something that looks like it should work, to something else that also looks like it should work. It's very helpful when the commit message describes how it was broken. Otherwise, if you have to roll back the changes you don't know what might get broken again.
"Small changes to everything"
98 files changed, 7568 insertions(+), 1022 deletions(-)
"Small changes to a few sections." There. Happy?
At a former workplace I created a leaderboard or most swears in commit messages lol
Curate your commits, friends. They should be structured for the benefit of the reviewer. This can be accomplished with liberal use of interactive rebasing.
It's fine, the reviewer doesn't have time to actually look at the code anyway. Lgtm, ship it.
My best work happens between typing out random stuff and pulling my hair out in the squash and reordering
git commit -m 'a meaningful message'
This is where I thought it was going as well.
git commit -m "A spirit trapped within a tree, no mouth to scream or eyes to see. A cage of bark, a prison of wood. A thing of rage where nature stood."
git commit -m "$(fortune | cowsay)"
“Sometimes the best way to fix a bug is to introduce an unstable new feature that will later have many bug reports. But the code will now work. And was only written after email chain that har management involved.”
“This is a temporary fix only, and the feature flag it’s under should be turned off after pull request 203. Under no circumstances should bug reports 1923 and 2045 use this new feature to fix issues, even if hours of work can be saved using this ”
“I am blameless for any future issues caused by using this new feature. Here be dragons.”
You should put this at the code, or at the flag documentation. The one place you it can't go at all is in a commit message.
Have better docs in those places; but for a class A mess, like above, make sure the approvers see this front and center. Make them sign for it
“this is temporary test code that should be removed before delivery to the customer”
this is real
Love it.
While folks are thinking about git commit messages I will offer this.
My only criticism of the essay is that the most important bit is listed at number 7.
See also semantic commit messages where you tag every commit with the type of commit: feature, fix, docs, refactor, test, etc.
My only beef with it is that they chose "feat" as a way to shorten the word "feature" when "feat" is already a word that means something different. Not every feature is a feat, and a lot of the biggest feats are actually bug fixes.
I’ve seen semantic commits done with emojis which is cute but also annoying, because they’re not as easy to type or grep for.
Semantic commits can be nice, but they can also invite bikeshedding about what’s a “feature” and what’s a “bug fix”, etc.
Not saying they aren’t nice, and if folks are using them and liking them, keep going. But if you haven’t used them before on a team, then just be aware that’s a thing than can happen.
I'd rather have bikeshedding over terminology that eventually results in a single word than just have free-form commits where you can never tell what the primary motivation between a commit is.
I once found a commit message in our commit history that just said, "i hate git..." bcz they hadn't changed anything, and I think it took a new line character and decided that they'd actually changed like 5 lines of code twhen they hadn't.
It was the funniest shit, someone who was a senior lead for like 9 years that had left, and 5 years later I find that...
git commit -m "Boss makes a dollar, I make a dime so I comment meaningful on company time"
Always put a ticket number in the commit message. That can make it much easier later to find out what the context was for some weird solution.
git commit -m "here is everything in this commit $(tar -czv . | base64)"
Go for broke
git commit -m "It works on my machine $(tar -ca . -C / | base64)"
I've worked with a few people who are just incomprehensible. One refuses to write commit messages of any detail. Just "work in progress". Cast him into the pit.
There was another guy that refused to name his tests. His code was like
describe(''. () => {
it('', () => {
expect(someFunc()).toEqual(0);
}
it('', () => {
expect(someFunc(1)).toEqual(0);
}
it('', () => {
expect(someFunc("").toEqual(1);
}
}
He was like, "Test names are like comments and they turn into lies! So I'm not going to do it."
I was like, a. what the fuck. b. do you also not name your files? projects? children?
He was working at a very big company last I heard.
edit: If you're unfamiliar, the convention is to put a human readable description where those empty strings are. This is used in the test output. If one fails, it'll typically tell include the name in the output.
I get the hesitation that things can turn into lies, but that's a sign that you're doing things wrong. That also tends to happen to comments that are far away from the relevant code, like the documentation of a 100 line function. The function can change while the comment is no longer visible on the screen, so it's easy to forget to also fix the comment.
But test strings like that are designed to avoid that problem. They're right there next to your tests for a reason. You should always be right next to them when you're changing the test.
Fundamentally, this is something that has to be addressed with code reviews. If someone can commit their changes to a group repository without anybody else seeing them, you're going to get stuff like this. As soon as you get decent code reviews, you can just reject a change where there are tests without documentation, the same way you can reject a change to a test where the documentation is now out of date.
Code reviews are important. Unfortunately, no-test-text guy convinced his whole team that he was right, and I wasn't able to block it. I'd scheduled a meeting to try to get the wider org to adopt a more sensible standard, but then there was a mass layoff 🤷
The other guy with the bad messages is at a tiny startup where they've laid off almost everyone, and the other 2 guys don't want to make waves. The CEO is big on "just ship it" (and also "why are there bugs in production? this is unacceptable!!")
For complex changes go with "self-explanatory" just to fuck with peoples' confidence