Some of the posts of interest are the following, though I could have added others than related to testing as well.
- Deploy Early and Often by Steve Berczuk
- Install Me by Marcus Baker
- Keep the Build Clean by Johannes Brodwall
- One Binary by Steve Freeman
- Own (and Refactor) the Build by Steve Berczuk
- Put Everything Under Version Control by Diomidis Spinellis
- Step Back and Automate, Automate, Automate by Cay Horstmann
Branching is a useful tool when used in the right context, but more often than not, branching is used as a way to avoid issue rather than to address them. Rather than branching because there is a true divergence in the code, we branch to avoid breaking existing code. The problem is that doing so simply defers a cost. Sometimes deferring the cost makes sense. Often it's better to invest in the techniques you need to enable incremental change while keeping the codeline working.
97 Things Every Programmer Should Know is about much more than just coding, or just release management. And that's the point: programming is a multi-faceted skill and to write good code, you need to know about more than just writing code.