リポジトリへのアクセス方法

これまでの記事ではリポジトリにアクセスする際、以下のようなURLを使用していました。
 file:///home/svn/repos01/trunk

URLの最初の部分(上記例では「file」)は、リポジトリの場所を特定するために使用するスキームを示しています。Subversionでは、「file」の他に「svn」「svn+ssh」「http」「https」などのスキームをサポートしています。

ローカルアクセス

ローカル上にリポジトリがある場合、スキームに「file」を指定することができます。
 file:///home/svn/repos01/trunk

以前の記事で「repos01」というリポジトリを作成しました。その場合、上記リポジトリURLの例では「/home/svn/repos01」がリポジトリの場所を指定し、「/trunk」がリポジトリ内のパスを指定しています。

このアクセス方法は個人での開発で使用する場合は効率的ですが、チームで開発する場合等、複数人で共同作業を行う上ではあまり役に立ちません。チーム開発の場合、リポジトリは、ローカル上ではなくメンバー全員がアクセスできるよう、ネットワーク上に配置しなければなりません。

補足:この方法でも、以下のようにUNCパスで指定すれば、ネットワークフォルダー上のリポジトリにアクセスすることは可能です。
 file://ServerName/svn/repos01/trunk

上記例では、「ServerName」がサーバーのホスト名、「svn」が共有フォルダとなります。この場合、スキームの後のスラッシュ(「/」)が3つではなく2つあることに注意してください。

svn

リポジトリをネットワーク上で活用する最も簡単な方法はsvnプロトコルを使用することです。
Subversionにはsvnserveという簡易サーバーが付属しています。svnserveは、ネットワーク接続を待ち受けて、ネットワーク経由でリポジトリへアクセスできるようにするだけでなく、ユーザーに対する簡単な認証機能も備えています。

svnプロトコルでアクセスしたい場合は、スキーム部分を「svn」に変えてやります。
 svn://home/svn/repos01/trunk

注意点として、svnserveのデフォルト設定ではリポジトリへの書き込み権限がない(読み取り専用)ため、そのままでは、チェックアウトやアップデートはできるけどコミットできません。

svnserveの設定は以下ファイルを編集してやることで行えます。
 /home/svn/repos01/conf/svnserve.conf

詳細は「SVNリポジトリ作成と設定」を参照してください。

svn+ssh

svnserveを使用したsvnプロトコルでの接続はセキュリティ上以下の問題を含んでいます。

  1. ネットワーク経由で転送されるファイルは暗号化されない。(パスワードは暗号化される。)
  2. パスワードは平文のままサーバーのconfディレクトリに格納される。

Subversionでは、上記問題を解決する手段としてssh(セキュアシェル)と組み合わせて使用できるようになっています。
sshはインターネット上のサーバー管理に広く利用されており、強力な暗号を使用してクライアント-サーバー間の通信を保護します。

リポジトリURLは下記の通り、スキーム部分が「svn+ssh」となり、それ以外はsvnと同じになります。
 svn+ssh://home/svn/repos01/trunk

http、https

Subversionでは、Apache Webサーバーと連携して、おなじみのhttp、httpsプロトコルでリポジトリアクセスすることも可能です。この運用は、Apache HTTPサーバーに「mod_dav_svn」というSubversionモジュールを組み込むことで実現できます。

Apache Webサーバーはユーザーの認証方式の選択肢が非常に多く用意されているなど設定の自由度がとても高いと言えます。それら、Apache Webサーバーがサポートしている任意の認証方式を活用できます。

インターネットに公開するなど、本格的なリポジトリ管理を行いたい場合はApache Webサーバーと連携させる方法が最も適していると言えます。