I'm not sure, but I think the solution to this problem is to use Git and a disciplined branching strategy.
The basic idea is that you maintain a mainline branch containing stable code (that is not 'in edition').
When anyone wants to make any changes, they take a branch off the mainline and change that.
Everybody has a stable base for their change branches, and thus everyone, at all times, can have a branch that (in between actual edits) is fully compilable.
Does this help? (I might be missing the point, of course.)