Git のリポジトリブラウザ Ginatra

Written by @dr_taka_n at 2009/07/19 01:47 [, , ]

「Git のリポジトリブラウザって何かない?」ということで確認してみた。

ちなみに・・・ Git 本体にも gitweb というリポジトリをブラウズできる cgi スクリプトが付属している。リポジトリのルートディレクトリで、

$ git instaweb --httpd webrick
[2009-07-19 00:06:10] INFO  WEBrick 1.3.1
[2009-07-19 00:06:10] INFO  ruby 1.8.6 (2008-08-11) [i686-darwin9.6.0]

とやると起動してくれる。詳細はヘルプで。

$ git help instaweb

デフォルトでは、HTTP サーバは、lighttpd が使用される。上記は、webrick を指定して起動させている状態。apache2 もサポートされているようだ。

これはこれですぐに使えて、質素ではあるが、必要充分な機能が含まれていてよい。 また、Redmine でも SCM (Software Configuration Management) として Git を使える。

  • 複数のリポジトリをまとめてブラウジングしたいんだけど・・・
  • カスタマイズしたいんだけど・・・
  • プロジェクトとの紐付けは別でやるから、とりあえずリポジトリ主体で・・・

というリクエストもあり、別のものも探してみることにした。

Ginatra とは

Git のリポジトリブラウザになる。名前からもわかるように、Sinatra をベースに作成された Web アプリケーションになる。

上記サイトにも書かれているように、Ruby + Sinatra で書かれた gitweb のクローンであり、現時点、gitweb の全ての機能を実装してはいない。まだまだこれからのアプリではある。

ginatra

インストールと設定

git のバージョンは、1.6.3 以上が必要と記載されている。

$ git --version
git version 1.6.1.2

1.6.1 だが、まずはこれで試してみよう。

必要な gem のインストール。

$ sudo gem install grit kematzy-sinatra-cache coderay

もし、gem のソースとして、http://gems.github.com を含めていない場合は、含めておく。

$ gem sources
*** CURRENT SOURCES ***

http://gems.rubyforge.org/
$ gem sources -a http://gems.github.com
http://gems.github.com added to sources
$ gem sources
*** CURRENT SOURCES ***

http://gems.rubyforge.org/
http://gems.github.com

テストスイートとしては、rspec、cucumber、rack-test を使用しているようなので、これも入れておく。

$ sudo gem install rspec webrat rack-test cucumber

Ginatra 本体をインストールする。と言っても、GitHub から git clone するか、 git プロトコルが使用できない環境にいる場合には、lenary’s ginatra at master - GitHub からアーカイブを取得する。

$ git clone git://github.com/lenary/ginatra.git

インストールは以上。

ローカルでさくっと動かす分には、公開リポジトリだけ用意しておけばよい。

環境の前提。

  • Ginatra HOME
    • /home/hoge/apps/ginatra
  • 個人用のリポジトリ(既にあるものとする)
    • /home/hoge/repos/repos1

個人用のリポジトリから公開リポジトリを作成する。

$ cd /home/hoge/apps/ginatra/repos
$ git clone --bare /home/hoge/repos/repos1 repos1.git

Ginatra のホームディレクトリ配下にあるreposディレクトリに移動して、個人用のリポジトリから公開リポジトリの作成を行っている。

この公開リポジトリの作成には、rake タスクも用意されている。

$ rake -T | grep add
rake add               # Adds a Git Repository to Ginatra.

Ginatra の repos 配下に配置するリポジトリのディレクトリ名称は、慣習にならって .git がディレクトリ名のお尻になっている必要がある。Ginatra はその名称のみしか認識しない。

起動して触ってみる

$ cd /home/hoge/apps/ginatra
$ ruby ginatra.rb
== Sinatra/0.9.2 has taken the stage on 4567 for development with backup from Thin

http://localhost:4567/ にアクセスする。

ginatra

2つのリポジトリが見えている。先程追加を行った“repos1”リポジトリと、先に入れていた“mephisto”リポジトリの2つだ。

“repos1”リポジトリを覗いてみる。

ginatra-repos1

コミットオブジェクトの一覧が表示され、右側に HeadsTags というボックスも見え、ブランチの切り替え、タグの切り替えもすぐにできるようだ。

最新のコミットを覗いてみる。

ginatra-commit-object

コミットオブジェクトのサマリが表示されている。git show で確認できる内容だ。

右側にあるボックスの内容について。

  • “commit:”
    • 自分自身のコミットオブジェクトの名称。
  • “tree:”
    • このコミットオブジェクトのルートツリーオブジェクト。
    • オブジェクト名称(“0efa4e68c517ffe2e6a7d895e64c9ee36f00e88f”)をクリックすると、ツリーオブジェクトの抱えているものが展開される。
    • 具体的には、実体のルートディレクトリの内容が表示される。
  • “parent:”
    • このコミットオブジェクトの1つ前のコミットオブジェクト。

“tree: 0efa4e68c517ffe2e6a7d895e64c9ee36f00e88f” をクリックすると、以下の画面になる。

ginatra-tree-object

リスト表示されているファイル名称は、Blob オブジェクトの名称になっており、クリックするとそのデータ、つまりはコミットされている実体ファイルの内容が参照できる。

感想

まだまだこれからのアプリではあるが、ソースもシンプルになっており、

  • Sinatra の使い方を学ぶ題材
  • Git レポジトリの Ruby バインディングである Grit を学ぶ題材

にもちょうどよく、しばらく追っかけてみようかなと、思えるアプリだ。

でも紹介されていた。

blog comments powered by Disqus