SVN Connectorsはどれを選べば良いか
EclipseのSubversionクライアントのプラグインのsubversiveを入れるときに、
その接続に必要なSVN Connectorsを選択する必要があります。
これは結局どれを選べば良いのか?というかどんな違いがあるのか?
過去の経験や公式ページの説明などをまとめておきたいと思います。
まずは、subversiveのドキュメントに以下が書いてあります。
Eclipse Subversive – Documentation
http://www.eclipse.org/subversive/documentation/faq.php#connectors
What are the differences between SVN Connectors and which one to choose?
JavaHL is a native client implementation (so it needs a binaries to work (dll on Windows, so on Unix and so on). It is developed by tigris with Subversion itself as a Java binding for subversion.
Pros:
There is always a new version of this client with the new version of Subversion
Cons:
To work with SSH protocol you need to create a tunnel manually
There is no interface to configure proxy server settings
It’s almost impossible to get to work together JavaHL 1.5.x and 1.6.x clients, cause Java class loader can not use binaries with the same names in two plug-ins.
Because of native binaries usage any crash in the library makes Eclipse to crash either.SVNKit is a pure Java implementation of the client (reverse engineered one), so it can be run on any OS with JRE installed.
Pros:
You do not need to find the binaries for you OS to get it to work
There is an interface for configuring proxy server settings
The work with SSH is incapsulated inside the client
It will never crash your Eclipse IDE instance
Cons:
It’s new versions are released always some time after Subversion release
Sometimes it inherits bugs from the native code while adopting it
The first versions (BETAs and RCs) are sometimes very unstableIt’s only for you to choose which connector to use.
Google翻訳でページをそのまま翻訳してみたらやはり厳しい結果(笑)になったので、雰囲気で意訳してみます。
選択するSVN Connectorsにはどのような違いがありますか?
JavaHLは、実行環境に依存した実装です。(Windowsではdll、Unixではso)。tigris社でのSubversionに関連する開発は、これで行われています。
■長所
- このクライアントの新しいバージョンは、常にSubversionの最新バージョンに対応しています。
■短所
- SSHプロトコルを使用する場合、自前でトンネルを作成する必要があります。
- Proxyサーバーを使用する場合の設定が出来ない。
- JavaHL1.5.xと1.6.xをJavaクラスローダーは同じ名前で実行することがまず出来ません。
- ネイティブライブラリの一部クラッシュがEclipse全体に影響を与えます。
SVNKitはPure Javaで実装されたクライアントで、JREさえインストールされていればOSを問わず動作させることが出来ます。
■長所
- OSのネイティブライブラリを意識する必要がありません。
- Proxy Serverの設定を行うインターフェイスがあります。
- SSHの動作はクライアント処理に内包されています。
- クラッシュした際でも、Eclipseに影響がありません。
■短所
- SVNKitの最新バージョンは、Subversionリリースのしばらく後にリリースされます。
- ネイティブコードからバグを引き継いでしまうことがあります。
- 最初のバージョン(BETA, RC)は非常に不安定です。
この説明だけを見ると、ネイティブのJavaHLが安定していればそれを使用したほうが良さそうですね。
パフォーマンスにも多少影響がありそうだし・・・。
ただ、以前JavaHLのConnectorとTortoiseSVNを併用していたときに、Subversionの管理ファイルのバージョンかなんかが一致しなくて、TortoiseSVNのバージョンを落としたりして対応したような気がします。
(まあそれは、SVNKitでも同じか・・・)
JavaHLの場合は、ProxyやSSHが設定できないとのことですが、そうだったっけな?
手元での環境で、SVNのConnectorをJavaHLにして確認してみると、リポジトリ追加の際の「SSH」のタブが設定できない・・・。
ただ使わないので別にいいや。Proxyの設定はどこに効いてくるのすらわかりませんでした。
今までJavaHLはなんとなく使用を避けてたのですが、これからちょっと使ってみます。