I would suggest looking at the Python 2 based csv2svn tool which can convert cvs repositories to any of Subversion, git, Bazaar, or Mercurial.
cvs2svn infers what happened in the history of your CVS repository and replicates that history as accurately as possible in the target SCM. All revisions, branches, tags, log messages, author names, and commit dates are converted. cvs2svn deduces what CVS modifications were made at the same time, and outputs these modifications grouped together as changesets in the target SCM. cvs2svn also deals with many CVS quirks and is highly configurable. See the comprehensive feature list.
Please read the documentation carefully before using cvs2svn.
- Free, gratis & open source
- Cross platform - should work on Windows, OS-X or Linux.
- Copes well with the vagaries of CVS usage
- Once you have the converted git repository on your machine you should be able to push it to a suitable host such as github.
N.B. This tool is Python 2 only and python 2 will sunset at the end of 2019! At the download python link above you will need to select the python 2 release that matches your platform.
N.B. I personally have had some problems connecting to the Tigris site but there is a mirror of the source on GitHub. You can download from there and run
python setup.py install to install.
Note: The documentation on the csv2git utility, etc., lives in the www folder of the downloaded code.