Subversiveのファイルロックに問題あり
Subversive 1.1.9_02で、既にロックされているファイルをロックした場合、エラーのフィードバックがされないという問題を発見。ちなみに、ダイアログが出ないだけでなく、SVNコンソール上にもエラーが表示されない。
調べてみたところ、Subversive 1.1.9_02が内部的に利用しているSVNKit 1.1.4の実装*1に問題がある模様。具体的にはorg.tmatesoft.svn.core.wc.SVNWCClientのdoLock(File[], boolean, String)メソッドにおいて、エラーがあった場合に、そのエラーをSVNErrorManagerに追加していないのが問題と思われる。ということで、以下のように修正してみた。
if (error == null) { (省略) } else { SVNErrorManager.error(error); // この行を追加 handleEvent(SVNEventFactory.createLockEvent(dir, lockInfo.myFile.getName(), SVNEventAction.LOCK_FAILED, lock, error), ISVNEventHandler.UNKNOWN); }
なお、このパッチを当てたSubversive 1.1.9_02は、以下から入手可能。
また、最新のSVNKitでもこの部分のソースは変更されていないようなので、とりあえず上記のパッチをSVNKitのIssueTrackerに投げてみた。
*1:ちなみに、Subversiveに添付されているSVNKitのソースは、本家のものに手を加えている模様。おかげで、動作確認のためのビルド環境を作るのにひと苦労。