-SVNクライアント
JavaSVNでリポジトリにつなぐコードを書いてみたらとてつもなく簡単だったので驚いた。かなりいろんなことができると思います。
レポジトリはすでにあるもの(E:\MyRepository)につないで見ました。普段、TortoiseSVNで使ってるのでなんのサーバーも立ってないため、Windows版のsvnserveを起動。
E:>svnserve -d -r \MyRepository
以下のテストコードを実行。あたりさわりない「Maya」フォルダを閲覧。他は請求書や帳簿や役会議事録とかが入ってるフォルダなので。
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; import org.tmatesoft.svn.core.io.SVNException; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; import org.tmatesoft.svn.core.io.SVNRepositoryLocation; public class SVNMain { public static void main(String[] args) { SVNRepositoryFactoryImpl.setup(); String rep = "svn://localhost:3690/"; try { SVNRepositoryLocation location = SVNRepositoryLocation.parseURL(rep); SVNRepository repository = SVNRepositoryFactory.create(location); long latestRev = repository.getLatestRevision(); System.out.println("[" + location.toString() + "] rev=" + latestRev); List list = (List)repository.getDir( "/Maya", latestRev, null, new ArrayList()); for(Iterator it = list.iterator(); it.hasNext(); ) { SVNDirEntry entry = (SVNDirEntry)it.next(); System.out.println(entry.getName() + ":" + entry.getRevision() + entry.getKind() + "[" + entry.size() + "byte]"); } } catch (SVNException e) { e.printStackTrace(); } } }
結果は以下の通り。
[svn://localhost:3690/] rev=70
MayaTutorial.doc:68[205824byte]
JavaServer Templates Maya.ppt:69[87040byte]
JavaServer Templates Maya.doc:70[308224byte]
maya_face001.jpg:69[65765byte]
Maya_gray.png:69[7257byte]
トリビア。現時点でJavaSVNはsvn://、svn+ssh://、http://、http://をサポートしてますが、file://プロトコルをサポートしていません。そうはドキュメントに書いてないみたいだけど、実際、実装がありませんでした。
追記
JavaベースのWEB-SVNインターフェイス作るのも、結構現実的かもしれません。WEBでちょっと探した限りでは、CおよびC#やPHPなどの実装はあるけど、Javaの実装が見当たらないが。。。