small medium large xlarge

24 Jul 2015, 17:20
Boris Peterbarg (1 post)

That whole section talks about feature branches that aren’t integrated for long periods of time, possibly until release. What about times when the integration period is days or even hours long?

In my work place, there are a couple dozen programmers and letting everyone commit on one branch seems like a horrible idea. It’ll certainly make tracking a feature’s history painful and there’s always a chance the feature will get cancelled. Instead we have feature branches that are worked on only by the programmers assigned to the feature.

The difference is that we integrate constantly to a staging branch, which is accessible only by the integration server. Any time there’s enough working code to showcase, the programmer “ships” it to the integration server, with any conflict resolutions necessary in a side branch. The server will merge the branch to staging only if after the merge all the tests continue passing. If something breaks down, all that happens is that the programmer gets an alert with full logs on what went broke.

There are sometimes problems where features clash, but then either a test fails, or the POs notice it when trying the feature on the staging build, just like any other unwanted behavior.

Integration into production and release happens only to feature branches that passed through staging and were deemed ready.

25 Jul 2015, 16:39
David Scott Bernstein (4 posts)

Hi Boris,

If you opt for feature branches because of tracking or concurrency issues then generally the more frequently you integrate, the less problems will arise. If your integration server can merge feature branches without issues then it sounds like your system is working fine for you but if you often end up with integration issues then I’d suggest moving to feature flags. In my experience, feature flags are simpler than branching and less likely to hide bugs or other integration issues so I prefer using them to branching, in most situations.


You must be logged in to comment