Posts on June 23rd, 2003

Dealing with SF.net's Anonymous CVS Access Timeouts

These days, most of my attempts to do anonymous checkouts or updates from SF.net's CVS repositories result in timeouts. For projects I'm a member of, I can use my account, but for others I just have to keep trying until an attempt doesn't timeout. After getting sick of doing that, I wrote a little script to do it for me.

The script below keeps trying to update until it's successful. After each failed attempt, it pauses for 5 seconds before trying again.

#!/usr/bin/env python

import os, sys, time

DEFAULT_CVS_ARGS = '-z9 -q up -dP'
SLEEP = 5   # seconds

def main(args=None):
        if args is None:
                args = sys.argv
        cvs_args = ' '.join(args[1:])
        if not cvs_args:
                cvs_args = DEFAULT_CVS_ARGS
        cmd = 'cvs %s' % cvs_args
        print 'running %s...' % cmd
        while 1:
                r = os.system(cmd)
                if not r:
                        break
                for i in range(SLEEP):
                        time.sleep(1)

if __name__ == '__main__':
        try:
                main()
        except KeyboardInterrupt:
                pass

# :indentSize=4:lineSeparator=\n:noTabs=true:tabSize=4:

Here's what it looks like running:

C:\sandbox\ctypes>cvsup
running cvs -z9 -q up -dP...
cvs [update aborted]: Error reading from server cvs.sourceforge.net: -1
cvs [update aborted]: Error reading from server cvs.sourceforge.net: 0
cvs [update aborted]: Error reading from server cvs.sourceforge.net: 0
cvs [update aborted]: Error reading from server cvs.sourceforge.net: 0
cvs [update aborted]: Error reading from server cvs.sourceforge.net: -1
cvs [update aborted]: Error reading from server cvs.sourceforge.net: 0
cvs [update aborted]: Error reading from server cvs.sourceforge.net: 0
cvs [update aborted]: Error reading from server cvs.sourceforge.net: 0
cvs [update aborted]: Error reading from server cvs.sourceforge.net: -1
cvs [update aborted]: Error reading from server cvs.sourceforge.net: 0
P setup.py
M samples/Windows/FindFile.py
M samples/Windows/wtl/readme.txt
P source/_ctypes.c
P source/callproc.c
P source/ctypes.h
P win32/com/register.py
P win32/com/server.py
P win32/com/samples/server/test_w32.py
P win32/com/tools/readtlb.py

C:\sandbox\ctypes>

posted June 23rd, 2003