I think this problem is general when we work with disconnected version controls like SVN on GIT. I'm coming from Clearcase background where there's an active server and the files are just virtual copies in our system.
If I talk in the clearcase perspective, if more than one people are working for a particular feature, this will be branched out seperately and checked in the particular branch by the developer branch. Once the entire feature is done, it will be merged back to the main branch. Essentially we're not screwing up the main branch by the halfcooked features. Because the others could hurt with the daily build.
The above method is good to go as I've a branch out there in the clearcase server. With disonnected version controls like SVN and GIT, how to solve this problem? Is it required to setup a separate server and share with the developers to accomplish this?