Mercurial is an open-source distributed version control tool. The current maximum version is 1.6.0.2.
1. What is a distributed version control tool?
A centralized version control tool (such as SVN, CVS, and cleancase) stores all the historical information of code repository on the same server. In distributed version control systems (such as mercurial and git), historical copies of code repository are stored on multiple machines, and there is no distinction between primary and secondary, unless you specify the machine as main repository based on the team's management needs.
Ii. From Integration to distributed
Our project used SVN as a version control tool, but it has been changed to mercurial. Why? In fact, the original reason is very simple. Centralized version control affects development efficiency too much! (Then everyone fell in love with mercurial .)
At the beginning of the project, SVN was naturally selected. Because everyone is very familiar with SVN, and the Chicago office already has a unified SVN server. The problem lies in the network. The network condition between the two offices in Beijing and Chicago has not been very good. It takes several hours to check out the code for the first time, and each check-in and check-out process is very slow. At last, the network was disconnected for two days and the check failed.
At this time, many open-source distributed version control tools have been developed, and the mainstream two are mercurial and git. Therefore, I decided to try the distributed version control tool. So which one is selected?
We have considered the following issues:
1. Is the existing SVN repository easy to switch?
2. How difficult is it to switch back to SVN if we do not like it?
3. Will it have to change our development habits?
4. Is every member of the team Quick Start?
5. Is it difficult for cruise to support it? (Because we use our own developed cruise for continuous integration of cruise .)
6. Is it easy to integrate with intellij idea? (Because we use intellij .)
2. Select mercurial
Why choose mercurial?
First, there is no doubt that the selected DVCs can only be git and mercurial.
Git is superior to mercurial in some aspects, such:
1. It is easier to integrate with SVN. Git can complete it through push and pull;
2. Git can distinguish between commiter and author, so that the process is more flexible;
3. A rare feature: You can view and modify changesets history (such as reordering and deletion) in a text editor and apply it to a local repository. In mercurial, queue.4. git is a content-based tracking system. Compared with mecurial, the model is easier to expand. linux and rails are widely used in the world. The bad thing is that windows is not very well supported, although there are also solutions (such as cygwin or msysgit ). Mercurial also has its advantages, such as: 1. it is easily accepted by SVN users (commands are similar); 2. almost all platforms; 3. the document is very good (there is a PDF, hgbook ). The two are both good DVCs. We decided to use mercurial based on the first few standards and the learning curve.
---------------------------------------------
TIPS: selecting appropriate tools based on the characteristics of the project can improve development efficiency.