I absolutely hate fixing merge conflicts. I absolutely hate seeing new work discarded by a merge.
But even more than both of those I hate seeing the branches awaiting merge piling up, that literally gives me anxiety.
Both my articles on Git are reactions to the dev lead at my last gig, a guy who led to both developers quitting in disgust. We quit because he was a big baby as a liaison and his code, despite a claim of 15 years in C# (I had a tenth that and my code was vastly better than his), was strictly Bangalore Six-Week Wonder level. He’d write a six-dot LINQ expression that I could replace with one.
On branches he was as compulsive as a speedball addict. When he came on I told him the 20 unmerged branches were really getting on my nerves, he heartily agreed, spoke of “branch hygiene”; that should have clued me in, jargon-spritzing people never get anything done. He sure didn’t. Those 20 branches represented months of work awaiting production.
By the time I quit there were 130. He used all the latest bullshit buzz; “technical debt” too. By now there are probably 300.
Where I just snapped was when he was merging in a feature I had finished and that had been fully tested on staging, ready to go. For some reason he felt he needed to add some code (illegible, ugly garbage) and he made a branch from my feature, would add 2–3 lines, then branch from that, and keep doing that. What he merged in was five branches away from my feature. I wanted to break his jaw. I asked him what the good Christ he was doing. “Flexibility,” he replied. Do you know what he meant? I don’t.
We were a distributed team so at least we didn’t have daily scrum horseshit.
Anyway my venting on this experience has made me almost enough money on Medium for a tenor sax, I already have alto, soprano, and sopranino. Life is strange.
I don’t like branches in the first place. I get that we need to use them. I want them kept to an absolute minimum.