Using WinCVS and Integrating Visual Studio .NET with CVS over SSH

Posted by Paul Farrow - Under: Software

Recently I have had to use CVS rather than source safe as the repository for my latest project.  I have used CVS with visual studio 6 using the  igloo toolset, now I cant remember if that was over SSH but it did work very well and CVS is far superior than source safe.

The project that I am now on is a visual studio .net one with the cvs repository having access over ssh.  Firstly I wanted to set up wincvs as this tool is rather good, now to use ssh on windows you either go down the putty route or the cgywin route.  I personally quite like putty and that is what I did.  I used the latest beta version of wincvs 1.3.17.2.  I then followed this doc to get the basics going. 

Things I fell fowl of :

  • Wincvs always gave “Putty Internal Error” – “invalid port number” error when trying to connect.  I had the ssh client in preferences, ssh as putty.exe rather than plink.exe once changed, no more errors.
  • I couldnt get wincvs to prompt for a password and then it always gave a password error as it was prefilling it with empty string.  I then moved to set up a private public key so I didnt have to put in the password.
  • Couldnt recognise the public key, I wasnt sure if I had to have a file called authorization_keys2 or not with ssh2, or whether I had to have a .ssh2 directory.  On the clients box in the end I just saved the public key in the file authorization_keys in .ssh under the home directory of the account I was trying to login as and resolved the keys no problem.
  • Under the options controlling ssh authentication I had to uncheck attempt keyboard-interactive auth (SSH2) for it all to work as it would always fail to authenticate if this was checked.
  • Plus when I copied and pasted the public key from putty’s key gen I noticed in vi it didnt always paste the full key, just check that you have the full key when pasting it into your authorization_keys file. 
  • The key in authorization_keys must NOT have returns / line breaks in it, some editors may attempt to put line breaks in it.

One other thing when setting up your putty preferences in wincvs make sure you reference the saved session rather than the actual box / ip address your going to, the preferences do ask for this but you should use a saved session ie: paulfarrow@cvssavedsession:/home/cvs

Also you should run pageant.exe in the putty suite of programs, this will save you typing in the private key phrase each time you login.

Once all these things are in place, wincvs worked a treat for me and its a great program.

Secondly integration with Visual Studio .Net and CVS, well as I said before I used to use the igloo program but in this instance couldnt get ssh or ext protocol working with it, reading along the lines I dont think it can.  I then stumbled over this program which I have been using under evaluation.  It is created by pushok and seems to work no problem with ssh or ext.  It took me a little time to get it working, infact I went away from it but then I stumbled on what I have to do to get it going which wasnt that clear.

For ssh/ext protocol you must add the following environment variable CVS_RSH=plink.exe, once I had done this it worked fine.

The full faq about how to do that for proxyok can be read here.   The product appears to integrate with visual studio no problem, the only thing you must do is get into the right mind set to use CVS (as you probably are aware), as with CVS you take a snapshot of the whole module rather than just checkout what you want to work on.