History of CVS Migration
Version 25
CVS Migration
Moving from CVS with extensive virtual modules (aliases) to Git or Mercurial
This is the notes about the bitweaver.org projects migration from CVS which makes extensive use of virtual modules (aka aliases ) in CVS to a distributed version control system (VCS) such as Mercurial or Git.
Feature | Git | Mercurial |
---|---|---|
Ad-hoc Builds | As of git 1.5.3, there is a concept known as submodules The subgit script wrapper is available. | Mercurial has subrepos that support multiple VCS systems including CVS, subversion, and git. The subhg script wrapper is available. |
Keywords | " keyword substitution is just stupid" - Linus in his trademark @$$hole attitude. Do some scripty stuff is his answer. No SCM support during build/export for tagging files with a release marker. /nickpalmer will develop a release script that handles this for us. The reason it might be regarded is stupid is that you can track every tag and branch to a SHA id, providing precise knowledge of the state of the code for a release (assuming one might use a tag for a release). Consider how jquery uses tags on github to denote release versions. | Keyword Extension works like a charm. Supports all existing CVS keywords out of the box. |
Cross Platform Support | Windows support is reported to be weak, but reports were two years ago and much progress has been made. It is "good enough" with msysgit to get the job done. | Rockin' on all platforms - linux, windows, OSX |
Build | On CentOS, git needed to be upgraded to get super modules. The FC13 git-1.7 rpm worked (rpm -ivh --nomd5). One small git.spec tweak was removing the conditional "--vendor" around desktop-file-install, so the line looked just like: "desktop-file-install --vendor fedora --dir=%{buildroot}%{_datadir}/applications %{SOURCE4}" CentOS 5.4+ broke things so the rpm would not build - had to edit docbook dtd definition to get a Fedora rpm to build properly. Replace "4.5" with "4.2" in /etc/asciidoc/docbook.conf | Mecurial support is available from the package manager on most distros |
Windows Installation | The reference for installation of git on windows is msysgit but so far attempts to get TortoiseGit working with that have not been successful. | TortoiseHg provides a complete installation in a single package. TortoiseHg is also available on linux for users needing cross OS support. |
Migration | Migration with cvs2git is a snap with the attached "convert" script: . Note that the script expects the repository to be stored in /cvsroot/bitweaver -Waterdragon | #Migrate each module separately, and then combine |
CIA/IRC notifications | hgcia extension is painless and can easily support local repo's |