On Tuesday morning I attended an experience report given by Francis Lacoste, who's working on LaunchPad (not to be confused with our LaunchPad). He basically described the changes they made to their integration system to render it more Agile, more "continuous".
They initially had a single "Main" branch that they tried to never break, a bit like what we have in our department. They had a GateKeeper that would validate all changes submitted by developers, and only if everything passes (build, unit tests, etc.) would the change be applied to the main branch.
They realized this was preventing them to fully implement continuous integration, so they now work with a "stable main" and a "devel main". The developers can now push changes at any time they want to the "devel main". The gatekeeper resides between the "devel main" and the "stable main".
(Note: the gatekeeper in their case is not a human being, it is an automated tool)