Long-lived Feature Branches Are The Worst

How do you deal with development efforts that are going to take a long time? If you only have one thing in-progress this is easy, but who only has one feature in the works a time? We have to be able to work on multiple features concurrently, and ship them when they're ready. So, of course, we use branches in source control to keep our changes separate and then merge them when they are done. And…