2013/01/12 このエントリーをはてなブックマークに追加 はてなブックマーク - 【JavaからSVN接続】SVNKitを利用してみた(exporting SVN log to use Java-library SVNKit )

【JavaからSVN接続】SVNKitを利用してみた(exporting SVN log to use Java-library SVNKit )











業務で今回のプロジェクトで追加したリソースを調査しなければならなくなった。

ただ、単純にSVNのヒストリーやリビジョンの比較をして目を酷使するのも嫌だったの で、
Javaからどうにかプログラミングが出来ないかとググってみた。









あった。








チェコのTMATE SOFTWAREという企業が公開しているSVNKitというJavaライブラリであ る。(チェコは良い仕事する気がする)
























(っていうかみんな知ってるのかな。僕は若手なのでベテランの人にとってはイマサラ感 があるやもしれん。)







Pure JavaでSVN接続及び操作が出来るライブラリである。
そのほかにもSVN関連ではJavaHLなどがあるそうだが、
JNIとか不慣れなので、そこはやめておいた。






これを使えば、ヒストリから取りたいデータだけを判別して取得することも出来る!気 がする!







ということで、作った。時間にして5~6時間で出来たかな。



リポジトリの作成はこれだけ。

  /**
     * リポジトリ作成
     * 
     * @param repoURL
     *             リポジトリのURL文字列
     * @return リポジトリ SVNRepository
     */
    public static SVNRepository createRepository(String repoUrl) throws SVNException {
        SVNURL url = SVNURL.parseURIEncoded(repoUrl);
        DAVRepositoryFactory.setup();
        return SVNRepositoryFactory.create(url);
    }
超簡単。 ユーザー認証もこれだけ。
 
  /**
     * ユーザー認証
     * 
     * @param name
     * @param pass
     */
    public static void auth(String name, String pass) {
        ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(name, pass);
        MySVNKitExecuter.repository.setAuthenticationManager(authManager);
    }
超簡単。 情報の取得はこれだけ。
    SVNProperties dirProps = new SVNProperties();
    List<SVNDirEntry> dirEntries = new ArrayList<SVNDirEntry>();
    int headRevision = -1;
    // 指定ディレクトリの取得
    MySVNKitExecuter.repository.getDir(dirName, headRevision, dirProps, dirEntries);
ほんと簡単。














ちらっとサンプルソースを見て、自分で勝手にオレオレクラスを作ったので、
もしかしたら、ライブラリの方のクラス使ったほうが賢いかもしれません。






処理内容

ユーザー認証

リポジトリの情報取得

自前のBeanにディレクトリの情報とファイル情報を詰め込む

指定したユーザーの更新したファイル情報だけファイル出力する






とりあえずこんな感じで実装してみました。



ライブラリ自体はとても簡単に利用することが出来た。
個人的に困ったのはむしろロジック(再帰処理)のほうであった笑





はじめはDOSからメインクラスを叩こうと思ったのだけれど、
クラスパス通したりが面倒になり、J-Unitから実行。
見事な手抜きっぷりである。



0 件のコメント:

コメントを投稿