Pure Javaで作られたSubversionクライアントのSVNKitを使ってみたくて、下記のURLにあるサンプルを読んでみたのですが、手間多すぎる…
Commit.javaや、Export.java試してみて、実際動いたけど、こんな面倒なハズは、、と思って調べてみると、どうも org.tmatesoft.svn.core.wc.SVNBasicClient のサブクラスとして、一通りSVNの操作が出来るようなクラスが揃っていました。
例えば、checkout,update,exportは、SVNUpdateClientを使うと簡単に出来ます。
とりあえずexportを行うクラスを書いてみました。とりあえず動いたというレベルです。。
import java.io.File; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory; import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; import org.tmatesoft.svn.core.wc.SVNClientManager; import org.tmatesoft.svn.core.wc.SVNRevision; import org.tmatesoft.svn.core.wc.SVNUpdateClient; import org.tmatesoft.svn.core.wc.SVNWCUtil; public final class SVNUtils { public static void main(String[] args) { try { SVNUtils.export( "http://selenium-extension.googlecode.com/svn/trunk/user-extension", "work/user-extension", null, null); } catch (SVNException e) { e.printStackTrace(); } } public static void export(String svnUrl, String dist, String userName, String password) throws SVNException { setupLibrary(); SVNUpdateClient client = createSVNClientManager(userName, password) .getUpdateClient(); client.doExport(SVNURL.parseURIEncoded(svnUrl), new File(dist), SVNRevision.HEAD, SVNRevision.HEAD, null, false, true); } private static SVNClientManager createSVNClientManager(String userName, String password) { return SVNClientManager.newInstance(SVNWCUtil .createDefaultOptions(true), userName, password); } private static void setupLibrary() { // For using over http:// and https:// DAVRepositoryFactory.setup(); // For using over svn:// and svn+xxx:// SVNRepositoryFactoryImpl.setup(); // For using over file:/// FSRepositoryFactory.setup(); } }