Sep 23, 2005
JavaSVN にチャレンジ
JavaSVN とは
Java から Subversion にアクセスできるライブラリ。 Subversion のクライアントを Pure Java で実装しているツワモノ。 お馴染み Eclipse 用 Subversion Plugin の Subclipse でも内部で利用されている。
- JavaSVN
- http://tmate.org/svn/
- JavaSVN サンプルコード
- http://tmate.org/svn/kb/examples/index.php
JavaSVN の実行環境構築
- JavaSVN (ganymed.jar, javasvn.jar, javasvn-cli.jar, javasvn-javahl.jar) をクラスパスに追加する
サンプルコード
package jp.in_vitro.codelets.javasvn;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNNodeKind;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNWCUtil;
public class Codelet {
public Codelet() {
super();
}
public static void main(final String[] args) throws SVNException {
String url = "http://example.com/repos/";
String username = "myname";
String password = "mypassword";
Codelet me = new Codelet();
me.initializeJavaSVN();
SVNRepository repository = me.prepareSVNRepository(url, username,
password);
me.printInfo(repository, "projects/");
me.printInfo(repository, "projects/pom.xml");
repository.closeSession();
}
protected void initializeJavaSVN() {
DAVRepositoryFactory.setup();
SVNRepositoryFactoryImpl.setup();
}
protected void printInfo(final SVNRepository repository, final String path)
throws SVNException {
SVNNodeKind nodeKind = repository.checkPath(path, -1);
if (nodeKind == SVNNodeKind.NONE) {
System.out.println("NONE");
} else if (nodeKind == SVNNodeKind.UNKNOWN) {
System.out.println("UNKNOWN");
} else if (nodeKind == SVNNodeKind.DIR) {
Map properties = new HashMap();
List children = new ArrayList();
repository.getDir(path, -1, properties, children);
System.out.println("*** properties ***");
for (Object key : properties.keySet()) {
System.out.println("" + key + " - " + properties.get(key));
}
System.out.println("*** children ***");
for (Object child : children) {
System.out.println("" + child);
}
} else if (nodeKind == SVNNodeKind.FILE) {
Map properties = new HashMap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
repository.getFile(path, -1, properties, baos);
System.out.println("*** properties ***");
for (Object key : properties.keySet()) {
System.out.println("" + key + " - " + properties.get(key));
}
}
}
protected SVNRepository prepareSVNRepository(final String url,
final String username, final String password) throws SVNException {
SVNRepository repository = SVNRepositoryFactory.create(SVNURL
.parseURIEncoded(url));
ISVNAuthenticationManager authenticationManager = SVNWCUtil
.createDefaultAuthenticationManager(username, password);
repository.setAuthenticationManager(authenticationManager);
return repository;
}
}
TrackBack ping me at
http://www.in-vitro.jp/blog/index.cgi/Library/20050923_01.trackback
writeback message: Ready to post a comment.
