Dean Michael Berris wrote:
Consider a library being worked on by N different people concurrently. Each one can work on exactly the same code locally, making their changes locally. Then say someone pushes their changes to the "canonical" repository. Each person can then pull these changes locally, stabilizing their own local repository, and fixing things until it's stable. You can keep doing this every time without any one of these N people waiting on anybody to "finish". Now then imagine that there's only one person who has push capabilities/rights to that "canonical" repository and that person's called a maintainer.
All the N-1 people then ask this maintainer to pull changes in or merge patches submitted by them. If the maintainer is willing and capable, that's fine and dandy changes get merged. Now consider when maintainer is unwilling or incapable, what happens to the changes these N-1 people make? Simple, they publish their repository somewhere accessible and all the N-2 people can congregate around that repository instead. MIA maintainer out of the way, release managers can choose to pull from someone else's published version of the library. Easy as pie.
Explain to me now then how you will enable this kind of workflow with a centralized SCM.
Private branches existed in all SCMs since, like, forever. As repeatedly mentioned before, all you are talking above is a process matter, not a tool matter. - Volodya -- Vladimir Prus Mentor Graphics +7 (812) 677-68-40