We are an organisation consisting of around 200 developers that are working continuously on one single product (using the revision control Git) which is planned to be released at a certain date.
Due to the huge number of developers, we are trying to create "cross functional" teams with around 10 developers in each team, resulting in around 20 development teams in the organisation.
Since we would like to maintain a continuously "high standard" (meaning when developer does a pull, the product should at least be compilable, etc) of the product in the main repository, we would like to use some kind of quality gates.
I am a bit unsure how to phrase the question, but I am wondering if I could get some advice of development methodologies for such a large group of developers working on a single product.
In our opinion, one end of the spectrum is to allow each developer to commit directly to the main repository, however we fear that due to the high number of developers / commits that the "main repository" might constantly be in a broken stage, due to we can't have a demanding "quality gate" for each commit.
The other end of the spectrum might be like (we think Linus Torvalds / Linux does it) a tree or a pyramid structure, where the "main repository" only has three pull sources, these three only has a handful of trusted pull sources, etc. However, we feel that with a structure like that changes have a long chain to climb in order to come into the "main repository". Plus that if a merge conflict occurs, the problem lands on another developer than the "original developer".
With all this background information and opinions stated, how can we learn and read recommended development methodologies for so many developers? How do large organisations (Microsoft, Facebook, Ubuntu, etc?) structure up their development?