- cross-posted to:
- git@programming.dev
- cross-posted to:
- git@programming.dev
A title as uninformative as the single
.
commit messages he suggests writing.Bare minimums of
typo
,refactor
,whitespace
,comments
are barely any effort – less than the thought it takes to name variables and functions.I really can’t agree with completely meaningless messages like
minor
and.
Git is a lot of things at once:
- A tool to record development history - warts and all
- A tool to create a logical sequence of changes
- A tool to communicate intent and ideas to a maintainer
Meaningless messages like
minor
and.
don’t suit any of these roles - not even 1. Even when recording development history with all mistakes, you’d still need context when you look back at the history. Matklad is a well respected developer. I wonder why he’s make such a bizarre claim.
Review is done before code gets into main, but that’s inefficient for most of the non-mission critical projects out there. A better approach is to optimistically merge most changes as soon as not-rocket-science allows it, and then later review the code in situ, in the main branch.
Assuming you have a project with continuous delivery, that is an absolute foot gun. Optimistically merge the change and then realize in situ that you forgot the
WHERE
part of your SQL command (or analog statement of the query builder)? No fucking thanks.A better approach is to optimistically merge most changes as soon as not-rocket-science allows it, and then later review the code in situ, in the main branch.
I upvoted before reviewing the article in situ, then I had to go back and fix my upvote.
That’s why for typical project it is useful to merge pull requests into the main branch — the linear sequence of merge commits is a record of successful CI runs, and is a set of commits you want to git bisect over.
… if you do this you completely negate your ability to use git bisect…
Quite the opposite. If you fast forward merge without squashing, you lose the ability to meaningfully bisect, since only the head of each merge is checked by CI - other commits may not even build
My point was about merging in general. Unless you’re either
- Making sure every single commit builds
- Squashing and merging, with no merge commit
Then you’re not going to be able to effectively use git bisect.