I've just recently installed mercurial, and have been playing around it with.  Overall, it seems like a great way to do version control.  However, the distributed nature of its architecture makes it so flexible, I'm not really sure what the ideal configuration/topology is.I'm well aware that asking something like what is the ideal Mercurial topology will never get a meaningful answer without more specific details ranging from business requirements, number of developers, security concerns, nature of the project, etc.However, are there any general guidelines or best-practices when it comes to setting up a Mercurial system?  In particular, I'm interested in hearing if most companies/projects setup a centralized, canonical repository.  Mercurial doesn't require that you do this, and you could essentially say anything is the canonical repository.  (Perhaps you could consider the lead developer's working repository the canonical one.)But is it generally a good idea to setup a dedicated source control server which simply hosts the canonical repository, so every developer can clone it and work locally?  Or is this unnecessary?  
Recommended guidelines for Mercurial setups
version control;mercurial
The notion of one central repository is the usual setting for a team to work together, as Hginit.com illustrates:But with a DVCS, you need to remember that:there isn't necessary only one central repo, you can setup many replicated version of that central reop for different purposes (testing, pre-deployment, ...)a unique central repo for everything will never work: you cannot put everything in a DVCS repo, because it will get too heavy to clone around, or it will contain unrelated set of files that get all referenced under the same tag, which don't always make sense.You need to rethink the organization of the set of files you want to manage, and keep them in separate repositories.