SVNKit の使い方 - ログ取得
Subversion 用の Pure Java ライブラリ SVNKit を使って、ログを取得してみる。(svn log のような動作を実装)
実行環境は以下の通り。
- Groovy 1.5.6
- SVNKit 1.1.8
事前準備として、groovy コマンドの実行時に SVNKit の svnkit.jar がロードされるように Groovy を設定しておく。(conf/groovy-starter.conf を編集する等)
ログ取得のスクリプト
working-copy ディレクトリの test.txt に関するログを取得・出力するようなスクリプトは以下の通り。
svnlog.groovy
import org.tmatesoft.svn.core.ISVNLogEntryHandler import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory import org.tmatesoft.svn.core.wc.SVNClientManager import org.tmatesoft.svn.core.wc.SVNRevision FSRepositoryFactory.setup() def manager = SVNClientManager.newInstance() def logClient = manager.logClient //ISVNLogEntryHandler インターフェースの実装 def logHandler = {logEntry -> println logEntry} as ISVNLogEntryHandler logClient.doLog([new File("working-copy/test.txt")] as File[], new SVNRevision(0), SVNRevision.HEAD, true, false, 0, logHandler)
基本的な処理の流れは、SVNClientMangaer のインスタンスを取得して、用途に合った Client オブジェクトを取得し、実行する操作に対応するメソッドを呼び出す事になる。
なお、使用するプロトコルに応じた RepositoryFactory の setup() メソッドを事前に呼び出しておく点に注意。
- svn://, svn+xxx:// の場合、org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl
- http://, https:// の場合、org.tmatesoft.svn.core.internal.io.dav. DAVRepositoryFactory
- file:/// (FSFS only) の場合、org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory
今回はリポジトリがローカルに存在するので FSRepositoryFactory.setup() を実行している。
実行結果例
>groovy svnlog.groovy 1 Fri Jul 18 00:14:12 JST 2008 fits テストファイル追加 2 Fri Jul 18 00:17:09 JST 2008 fits 詳細な内容を追加 3 Fri Jul 18 00:21:11 JST 2008 fits 誤字の訂正