Given the title, I expected a rant. Was very pleasantly surprised at the content. I appreciate the format of “here are a bunch of mistakes I’ve made, maybe this will help you avoid some of them.”
Absolutely; this is a nice change from some of the more inflammatory content lately from Drew which has really rubbed me the wrong way (which is neither here nor there). Really love that this post combines humility with a gift of lessons learned in code form!
CI helps me with this kind of (user error) problem because it’s easy to keep repeating builds until all (ha!) such problems are gone.
This happens to me all the time too… Automating and transposing the process into code is helpful but exactly like Drew depicts it, it comes with its own challenges.
A small idea: rather than relying in “git pull before git push”ing to fix the possibility of pushing from an old master, maybe write the script to push master before pushing the tag - if any new commits were landed on master in between, the push to master will be rejected, your script stops there and doesn’t do the push of the tag.
git push --atomic also exists now, though I think it’s recent and it requires server side support. I have no idea what proportion of servers support it.
git push --atomic
There are many ways to skin a cat, but I think the larger point is that which cats we need to skin is an unexamined unknown until they’re there one day clawing at our faces.