To Branch or Not to Branch?
From CitconWiki
This session discussed whether no not code should be branched and its impact on CI.
Don't branch!
- Jeff Frederick: "Branching is deferred integration" You are deferring the discovering of problems. There is a deliberate choice of stability over early discovery of problems.
- The only needs to branch are habit and because the tools make it possible
- Everyone thinks all the time. Any commits go to prod
Good Reasons to Branch
- Feedback on multiple commits
- Branching structure mirrors org strucutre, so if one branch goes red, you know.
- If you're devoliping something that's not a web app and users subscribe to a release / dev channel (ie. Firefox)
- Need a version deployed to a separate environments for separate business purposes
- To backport features and forward port bugfixes.
Additional Topics Discussed
- Use feature toggles
- A few examples of how branching works in
- Jenkins will kick off tests and only promote to the QA if the tests pass.
- Pipe Organ theory if there is one branch