NOTE: This is now out of date, see the update here.

If you’re interested in open source at all, you don’t want to be without Sourceforge, where a lot of the world’s open source code resides. Strangely, it’s not obvious how to get code from Sourceforge if you’re behind a firewall that doesn’t have port 80, 443 or 2401 wide open. In other words, half of corporate America can’t access open source “out of the box”.

There are actually two ways to get code from Sourceforge. As a project developer with write permission, you use the CVS :ext: protocol, which tunnels through SSH. For anonymous access to anyone else’s code, you have to use the :pserver: protocol. Sourceforge has ports 80, 443 and 2401 (the default) set up for pserver.

With TortoiseCVS, you can do pretty much anything you need to with ext, because TortoiseCVS uses Putty for SSH, and Putty can use an HTTP proxy. Just specify a fully-configured Putty session name instead of a server when using :ext: under TortoiseCVS, and TortoiseCVS lets Putty use the session to set up the SSH connection.

I love TortoiseCVS, but at first blush it looks like it won’t do the job for anonymous Sourceforge access – you need pserver over an HTTP proxy and there are no TortoiseCVS settings for that. Fortunately, WinCVS fills this requirement. When you select Remote->Checkout Module, right there you can add the proxy information. Here comes the code! Rockin’!

But hold on! When WinCVS builds the pserver host string, it adds your proxy information in the following format:

CVSROOT=:pserver;username=anonymous;hostname=cvs.sourceforge.net;proxy=yourproxy.com;proxyport=##:/cvsroot/yourmodule

It appears that TortoiseCVS can actually use this format, now that it’s in the CVS/Root file, even though it’s not documented. Go to the CVS directory that WinCVS created, and you should be able to use the tortoise now! I suppose with a little manual copying/editing, you could set up CVS/Root files yourself and bypass the need for WinCVS, but I haven’t tried that yet. I recommend just kicking things off with WinCVS, it’s a breeze.

UPDATE: Under linux, the format is like this:

CVSROOT=:pserver;proxy=yourproxy.com;proxyport=##:anonymous@cvs.sourceforge.net:/cvsroot/yourmodule

Don’t ask me why it’s different! Yuck. But these formats are working under Windows and linux. Go get some code!

One Comment

  1. […] To get boost from CVS(even with a firewall): (UPDATE: If not, try these instructions instead…) cvs -d:pserver:anonymous@cvs-pserver.sf.net:443/cvsroot/boost login cvs -z3 -d:pserver:anonymous@cvs-pserver.sf.net:443/cvsroot/boost co -P boost […]

Leave a Reply