SVNのネットワークアクセスには、4つの一般的なプロトコルがあります。
svn://repos
svn+ssh://repos
https://repos
http://repos
ウィキペディアのページでは、4つの異なるプロトコルの違いについてあまり言及していません。私はいつもsvn://
、セットアップが最も簡単だからですが、違いは何で、どちらが「良い」のでしょうか?
http://
には 真面目な 特に数千の小さなファイルを処理する場合のオーバーヘッド。 SVNで保存された約50,000個のアイコンがあるWebサイトにsvnを使用しました。 HTTPでは、チェックアウトに約20分かかりました。 svn://
に切り替えたら、1分もかかりませんでした。これは、HTTPではファイルごとに1つの新しいHTTP要求であるためです。
http://
ただし、次の大きな利点があります。通常はファイアウォールを通過します。たとえば、svn://
に切り替えたので、ファイアウォールのために大学からリポジトリにアクセスできなくなりました。
SSL/TLSを使用するかどうかの違いに関しては、明らかです。データは暗号化されます。ただし、セットアップはより困難です。
svn+ssh
は、SSHトンネル内で実行されるsvn
プロトコルです。クライアントはSSHを使用してリモートサーバーにログオンし、そのトンネルでsvnコマンドをリモートで実行します。私の見解では、svn+ssh
は、SSHサーバーが既に実行されていると仮定して、そのシステムで起動するサーバーがないため、遠方のシステムでSubversionリポジトリを使用する最も簡単な方法です。
また、svn+ssh
はSSHの暗号化保護の恩恵を受けます。信頼できないネットワークでは生のsvn
プロトコルを使用しないでください。
svn+ssh
の主な問題は、リモートマシンでシェルアクセスが必要なことです。シェルアカウント全体へのアクセスを許可せずに、誰かにリポジトリへのアクセスを提供することは困難です。そのためには、HTTPベースのメソッドの1つ、つまりhttp
またはhttps
(暗号化および認証レイヤーのためにhttps
が望ましい)が必要です。これらの方法は設定がより複雑です(HTTP/HTTPSサーバー、たとえばApacheが必要です)が、リポジトリ管理者はリポジトリのアクセス権を慎重かつ正確に制御できます。
https://
およびsvn+ssh://
は暗号化されているため、安全なデータ(SVNパスワードなど)を送信する場合により安全です。
Gitのようなものであれば、svn+ssh://
はhttps://
よりも高速になり、svn://
はhttp://
よりも高速になります。
svn://
またはsvn+ssh://
は、Subversionリポジトリにアクセスする際に、プレーンHTTPまたはセキュアHTTPSよりもはるかに優れたパフォーマンスと速度を提供しますが、現在ではそうではありません。 svn://
またはsvn+ssh://
はHTTP(S)よりも高速ですが、違いはSVN 1.6以前のバージョンほど大きくありません。
(noHTTP(S)および最新のSubversion 1.7+クライアントおよびサーバーに大きなパフォーマンス問題があります。
Subversion 1.7を使用したHTTP(S)アクセス HTTPv2のおかげで、特に遅延時間の長いネットワーク接続でより高性能になりました(HTTP/2!と混同しないでください)。 HTTP(S)アクセス用にlibneon
からlibserf
に切り替えられたSubversion 1.8 およびlibserf
はlibneon
よりも優れたパフォーマンスを提供します。
HTTP(S)またはHTTP(S)で動作するSubversionのパフォーマンスに関連すると思われる問題がある場合、HTTP(S)を遅くするネットワーク上のサービスがあるかどうかを調査する必要があります。根本的な原因は、ウイルス対策、アクティブなファイアウォール、またはプロキシである可能性があります。誤って設定されたネットワーク設定は言うまでもありません。そして、最新のSubversionクライアントとサーバーを使用することを忘れないでください!
ネットワークの構成ミスの例を考えると、Windows Updateサイトにアクセスできない切断されたネットワークで動作するクライアントコンピューターに影響を与えるかなり一般的な問題があるようです( http://ctldl.windowsupdate.com/ )。これは広範なシステムサービスに影響を与える重大な問題ですが、エンドユーザーはHTTPSを介してSubversionクライアントを使用しているときに気付いて報告します。問題はパフォーマンスに関連しているように見えますが、そうではありません。詳細については、このStackOverflowスレッドを参照してください: https://stackoverflow.com/a/38499619/761095 。
また、http://(Apache + SVN)を使用する場合は、mod_auth_sspiモジュールを追加したWindows認証を使用してユーザーをログインさせることができます。
そのため、(Windows)開発者は1人のユーザー/パスワードを覚えるだけで済みます
http
とhttps
は、Subversionサポート用のWebサーバーモジュールによって処理されるため、HTTPベースの認証(.htaccessで構成)を使用して、リポジトリへのアクセスを制限できます)。