What is Mercurial?
Mercurial is a distributed source control management system. For new projects created on CodePlex.com, you will be able to choose from either Team Foundation Server or Mercurial as your source control repository.
To illustrate, in the Create a Project wizard you’ll see the following:
If you are a current project owner and wish to switch to Mercurial, please contact us at CodePlex Support with your project name, and we’ll be glad to help you out.
Adding distributed version control support to CodePlex has become a top feature request from users, as the popularity of DVCS for open source development has grown significantly. Mercurial is one of the most popular distributed version control systems and offers great support for Windows based tools as well as works very well as a hosted service.
If you are new to Distributed Source Control Systems, please read this section!
Mercurial is a Distributed Version Control System (DVCS). Unlike Team Foundation Server, DVCS has a very different model for collaborating on an open source project.
- In DVCS, you do not check in and out changes. You check in and out the entire set of changes (aka the repository).
To get started, you first make a local copy of the repository, or clone the repository. In TFS speak, this is the equivalent of getting the entire history (source code + metadata) of each and every change set in source control. It is literally making a copy of everything you see in the CodePlex source control. Since you are copying the entire repository, there isn’t a notion of “checking out”.
- In DVCS, you commit to the local repository, and push your changes back to CodePlex.
Since you have your own repository, you “check in” by committing to your local repository. Once you’ve committed locally, you can “check in” those changes back to CodePlex by pushing those changes. Hence the term “check in” doesn’t apply because it is overloaded in the DVCS context.
A quick recap:
- Anyone can clone. (Create local repository, Get all change sets from repository)
- Anyone can commit. (Check-in to their local repository)
- Anyone can pull. (Get all change sets from repository)
- Only team can push. (check-in of local repository to CodePlex)
See our post Using Mercurial on CodePlex for a step-by-step walkthrough.