SVN Kit for Javaのダウンロード
以下のURLからSVN Kitをダウンロードする。
http://svnkit.com/download.php
今回は「org.tmatesoft.svn_1.7.11.standalone.zip」をダウンロードした。
ダウンロードした「svnkit-1.7.11\lib」以下のjarをプロジェクトのlibディレクトリか何かにコピーして、まずはビルドパスに追加する。
Eclipseだと、右クリック→ビルドパスで進んでいくやつだね。
SVNKit for javaのJavadoc
ちょっと上でダウンロードしたやつよりもバージョンが新しいけれど、以下がJavadoc.
http://svnkit.com/javadoc/
基本的にはこのJavadocや、StackOverFlowなどを参考にコーディングする。
SVNKit for Javaを使って特定のリポジトリのログを取得するサンプル
SVNKitを使ってSubversionのリポジトリからログを取得した。
ユーザー名やパスワードはISVNAuthenticationManagerを使って設定している。
package sample; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.Iterator; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; import org.tmatesoft.svn.core.wc.SVNWCUtil; public class Main { public static void main(String[] args) { String reposUrl = "http://192.168.2.1/svnrepo"; //適当 String targetRepo = "trunk"; //適当 String user = "sho322user"; //適当 String password = "sho322pass"; //適当 try { SVNRepository repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(reposUrl)); ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(user,password); repository.setAuthenticationManager(authManager); //(参考)http://www1.megaegg.ne.jp/~yasu/Programmer's%20Page/basic/date.html Date today = new Date(); long todayData = today.getTime(); long yesterdayData = todayData - (long)(24*60*60*1000); Date yesterday = new Date(yesterdayData); Long latestRevision = repository.getLatestRevision(); Long yesterdayRevisionNo = repository.getDatedRevision(yesterday); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日H時"); System.out.println("昨日の今頃(" + sdf.format(yesterday) + ")から今日(" + sdf.format(today) + ")までのログを出力します");; System.out.println("リビジョンは:" + yesterdayRevisionNo + "から" + latestRevision + "までです。"); Collection logEntries = null; logEntries = repository.log( new String[] {targetRepo}, null, yesterdayRevisionNo, latestRevision, true, true); for (Iterator i = logEntries.iterator(); i.hasNext();) { System.out.println(i.next().toString()); } } catch (SVNException e) { e.printStackTrace(); } } }
Javaで「昨日の今頃」のDate取得するには、以下のようにする。
Date today = new Date(); long todayData = today.getTime(); long yesterdayData = todayData - (long)(24*60*60*1000); Date yesterday = new Date(yesterdayData);
この辺は以下のサイトを参考にした。
http://www1.megaegg.ne.jp/~yasu/Programmer's%20Page/basic/date.html
上のコードを実行すると、こんな感じでログのデータが出力される。
昨日の今頃(2013年10月08日20時)から今日(2013年10月09日20時)までのログを出力します リビジョンは:20から30までです。 20 svn:log=コミットしたよ! svn:author=yoshikawa tomoki svn:date=2013-10-08T20:33:10.898198Z M /trunk/hoge.fuga 30 svn:log=適当にコミット svn:author=yamane risako svn:date=2013-10-08T21:32:03.994913Z A /trunk/fuga.hoge