I've recently started getting into Git on a personal project, and I can see how a DVCS might benefit us at work (which is a large enterprise software company, currently running Perforce). Feature work in my team for example mostly consists of developers creating their own branches; sometimes these are shared between small teams of developers. I think it would be more efficient in this instance to use a DVCS.
In the more general case, though, I'd be interested to hear from people that use a DVCS at work, in medium to large teams.
- How do you deal with N-way merges? Is this even a common scenario? Mercurial only supports N-way merges by doing (N-1) 2-way merges (and read that this is the preferred solution in other DVCS), which sounds like a very laborious process for even relatively small N.
- Do you use a single central authoritative repository, or is it truly P2P?
- Do developers often push and pull code to and from each other, or does everything go via the central repository?