リポジトリブラウズに、SVNIndexXSLTを利用する
Subversionのリポジトリへのアクセスは、当初はファイルサーバのfile://プロトコルからのアクセスがメインでした。
ですが、次第に利用するメンバが増えてきたことと、ネットワークの制限でファイルサーバにアクセスできない場合に困るということで、http(https)プロトコルを利用してアクセスできるように調整を進めています。
(http経由でのアクセスはApache + mod_dav/mod_dav_svn で設定できます)
さて、リポジトリへのアクセスは、TortoiseSVNやRedmineなどの専用クライアントを使うので、あんまり気にしなくてもいいのですが、たまにブラウザからもリポジトリを参照することがあります。(テキストファイルなどを眺める際は、ブラウザのほうが便利なので)
ただし、基本は素のmod_dav_svnを通しての表示なので、非常に味気ないものになってしまいます。
例えに出しては申し訳ないのですが、Redmineのリポジトリなどもそう。
単純にファイル/ディレクトリの一覧が表示されるだけで、初めてリポジトリを使う人には、『なんじゃこりゃ~?』な気がするかもしれません。
使うにしても、ガイドも注意点などもなく、なんだか不親切です。
#別に見るだけなら専用のリポジトリブラウザ、ViewVCとかを使えば良いじゃないの、というご意見もあるかもしれませんが、そうなるとまた別途認証を用意しないといけません…。
ちょこちょこと調べたところ、SVNIndexXSLTというオプションを使えば、リポジトリ情報をXMLで生成し、Lokk&FeelはXSLTでカスタマイズできることがわかりました。単純にブラウザで表示する以外にも、http経由でXMLでデータを取得することができると、何かと便利です。
TortoiseSVNのマニュアルにサンプルがありましたので、いろいろカスタマイズしてみました。
リポジトリのチェックアウト用のアイコンをクリックすると、TortoiseSVNが起動する仕掛けも入っています。(マーカーで囲んだ部分)
[ 補足 ]
このXMLのオプションですが、svnコマンドでも、—xml というオプションをつけると、XMLでアクセスできるようですね。
たとえば、こんな感じ。
svn list --xml http://redmine.rubyforge.org/svn/
上記のようにすると、XMLでリポジトリ情報が取得できます。svn log, svn infoなども同じ。
Redmineのソースをよく見ると、リポジトリへのアクセスは、svnコマンドを通して行っています。また、一覧取得には、やっぱり “—xml” オプションを使っています。該当するのは、{REDMINE_ROOT}/lib/redmine/scm/adapters/subversion_adapter.rb の、このあたり。
# Get info about the svn repository
def info
cmd = "#{SVN_BIN} info --xml #{target('')}" # <- ここ。
cmd << credentials_string
info = nil
..................
end
なるほど…。
でも、やっぱりコミットログや、Authorなどの属性は表示されるわけではないので、あくまでも補助的なものになりますね。
コメント
コメントを投稿