世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2005年01月14日

Subversionリポジトリの一覧

Subversion によるバージョン管理にあるような理由で、すべてのプロジェクトを1つのリポジトリに収めるのではなく、いくつかのリポジトリに分割したい。これをWebDAVから扱うにはSVNParentPathによって、特定ディレクトリ以下のディレクトリをすべてSubversionリポジトリとして扱うのが楽である。リポジトリを追加しても設定ファイルの変更もApacheの再起動も必要ない。

<Location /svn-dav>
  DAV svn
  SVNParentPath /path/to/repositories/parent/directory/
  SVNAutoversioning on

  AuthType Digest
  AuthName "Subversion Repository"
  AuthDigestDomain /svn/
  AuthDigestFile /path/to/.htdigest
  Require valid-user

  BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
</Location>

問題はこれらのリポジトリをどうやって一覧するか、ということである。単純に、<Location></Location>内にOption +Indexesしたのではうまくいかなかった。そこで、Subversionによるバージョン管理を行う実体は他のパスに配置することにして(仮想パス・仮想ファイルシステムについて実態って言うのも変だけど)、そのパスにmod_rewriteで転送することにした。以下を見たほうが早い。

<Location /svn-dav>
  DAV svn
  SVNParentPath /path/to/repositories/parent/directory/
  SVNAutoversioning on

  AuthType Digest
  AuthName "Subversion Repository"
  AuthDigestDomain /svn/
  AuthDigestFile /path/to/.htdigest
  Require valid-user

  BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
</Location>

Alias /svn/ /path/to/repositories/parent/directory
Alias /svn /path/to/repositories/parent/directory
<Location /svn>
  Options +Indexes
</Location>

RewriteEngine on
RewriteRule ^/svn/(.+)$ /svn-dav/$1 [PT]
RewriteLog /path/to/rewrite_log
RewriteLogLevel 1

これで目的は達成された。リポジトリを追加すれば確実に一覧に出てくるし、それ以上は何の設定も再起動も必要ない。

2007-06-06追記

上記はSubversion 1.3以前のノウハウになる。Subversion 1.3以降ではSVNListParentPath onで解決するらしい。まだ他にもWebDAVまわりで何かしら応用のしどころはあるはずだー、と悔し紛れに言ってみる。

トラックバック

http://yugui.jp/articles/169/ping
CVSからSubversionへの移管 (ratio - rational - irrational)
CVSから、subversion + Apache によるWebDAV経由の自動バージョン管理への移管。

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system