This directory contains some config files from the build.eclipse.org hudson server. 

They are not necessarily up to date, I just put some copies here to have some long term record of a copy.

Update: the config.xml files are the final versions in use for Helios SR2, and are captured here, 
as I'm going to ask the jobs to be removed soon. 

