As an external, non-committing but interested observer, I agree with Patricia and Jonathan. The team I've been working with switched to using branches extensively in the last year. Developers open branches "per feature" and synchronize/pull from trunk as stable changes are merged into trunk. Code reviews can also be done before the integration merge. In our case, we also serialize integrations so that as a rule no integration takes place when trunk is unstable, e.g. as soon as an integration breaks trunk, it's rolled back as a unit, trunk is re-verified, and the developer gets in line to try again later.
River is a bit unusual by current testing standards IMO as the test suites take a very long time to run, making integration a bigger effort. It seems like current best practice regarding testing is to rely more on mocking and to keep tests running in as short a time as possible, to receive feedback quickly. It does look like a few person-days of work were just lost by having to track down and isolate the failures. Regards Patrick
