Mercurial change from Large CVS repository + Large Binary Libraries

Jesse Glick jesse.glick at sun.com
Tue Feb 19 13:55:50 CST 2008


Francisco Diaz Trepat - gmail wrote:
> Large CVS repositories being Converted to Mercurial.

Worked OK for me, after throwing out branches and "Attic" files. In 
practice I find that when developers say they want history imported, 
they usually mean they want to be able to run 'hg ann' and get some 
useful output - for which you only need trunk history of files which 
existed in the trunk at the time of conversion. In the rare case you 
need to reconstruct an entire historical snapshot of your sources, you 
can still use CVS (keep the server around read-only). Of course your 
team may have different needs.

> How can we handle libraries? Should they be in the repository, what
> are your thoughts in general?

If you *can* use something like Maven, you will certainly have less to 
worry about. This can be a big change, and you need to be sure that 
libraries are never changed in the repository without supplying a new 
version number.

> In your experience what are the main points to gain from converting
> CVS to Mercurial.

No more

* trying to remember what was the last base tag you used when merging 
the trunk into a branch
* coaxing people into using -kb at the right times
* figuring out how to add a directory full of files
* tracking down the original version of a renamed file
* maintaining dozens of little separate .cvsignore files
* finding out that the reason a colleague's code works only on their own 
computer is that they have not bothered to update the rest of the 
repository in over three months
* urgent screams that the server is down again and no one can get any 
work done

> Are they any disadvantages as far as you know in converting from CVS
> to Mercurial?

* no way to check out just part of a repo
* no way to avoid pulling down a big history
* "merge contention" if too many people are trying to push into one 
central server (even if they are working on unrelated files)
* baffled stares when you try to explain to longtime CVS users how 
Mercurial history and merging work

> what are the CVS users more prone to dislike an more to like about
> Mercurial?

If you don't know what you are doing and mess something up (usually 
during a merge), you can innocently dump incorrect changes into an 
entire repository, whereas with CVS if you do all operations within your 
own small directory at least you know you are not affecting anything 
outside that area.



More information about the Mercurial mailing list