package hudson.plugins.svncompat13; import hudson.Plugin; import java.io.File; import java.util.Collection; import java.util.Iterator; import java.util.TreeSet; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.internal.wc.admin.ISVNAdminAreaFactorySelector; import org.tmatesoft.svn.core.internal.wc.admin.SVNAdminAreaFactory; /** * Plugin that allows SVNKit to be compatible with Subversion 1.3. All * Subversion operations in Hudson go through SVNKit, which creates working copy * only compatible with Subversion 1.4 by default. See SVNKit FAQ for more * details. * * @author <a href="mailto:jbq@caraldi.com">Jean-Baptiste Quenot</a> * @plugin */ public class PluginImpl extends Plugin { @Override public void start() throws Exception { SVNAdminAreaFactory.setSelector(new ISVNAdminAreaFactorySelector() { public Collection getEnabledFactories(File path, Collection factories, boolean writeAccess) throws SVNException { Collection<SVNAdminAreaFactory> enabledFactories = new TreeSet<SVNAdminAreaFactory>(); for (Iterator factoriesIter = factories.iterator(); factoriesIter .hasNext();) { SVNAdminAreaFactory factory = (SVNAdminAreaFactory) factoriesIter .next(); if (factory.getSupportedVersion() == WC_FORMAT_13) { enabledFactories.add(factory); } } return enabledFactories; } }); System.out.println("SVNKit is now compatible with Subversion 1.3"); } // taken from org.tmatesoft.svn.core.internal.wc.admin.SVNXMLAdminAreaFactory.WC_FORMAT // as it's not public private static final int WC_FORMAT_13 = 4; }