A long time ago, the initial development of NTFS Link was done in CVS and hosted on Novell Forge. Novell Forge shut down at the end of March 2010, a deadline I totally missed, considering the project hasn’t been work on in quite a while. I still wanted the preserve the version control history though.
Fortunately, the repository was still online and accessible. Since there didn’t seem to be any official way to download the repository anymore, I was happy to come across cvssuck, which reconstructs the CVS repository locally with client access only.
One problem I ran into: The Novell Forge CVS repository is served through SSH, and I wasn’t able to use public key authentication, with all the Novell Forge facilities seemingly having shut down already. So cvssuck was going to ask me for the password (“anonymous”) about a million times.
Someone in #linux was kind enough to point me to sshpass, which allows us to use ssh while given the password on the command line (apparently, the same thing could be achieved using expect as well).
Ultimately, here’s the commands I used:
$ echo "sshpass -panonymous ssh $*" > customssh.sh $ chmod +x customssh.sh $ CVS_RSH="`pwd`/customssh.sh" cvssuck -v :ext:anonymous@forgecvs1.novell.com:/cvsroot/ntfslink/ -o ntfslink-repo .
Now, on to the migration to git!
[Note: git cvsimport would have almost worked as well, but I couldn’t get it to work without explicitly specifying a CVS module (strange assertion error); since the NTFS Link repository had no root directory that could serve as a module, I needed to export all modules via “.” – cvs2git handles this fine]