:::: MENU ::::

Trac1.0.1とgitを連携させる

Trac1.0 から正式に git がサポートされたので、さっそく適応してみる。
結論から言えばできた、しかし git1.8 はダメで git1.7 を使わないといけないので注意!

Git Plugins について

この Git Plugin が正式サポート版になっただけなので、さくっと入れられると思っていた。
Trac0.11 系で入れたことあったし。

本家のヘルプとソースを見ると結構 Trac0.12 系のものと変わっていたので、
Trac1.0 ならこっちのものを使った方がよい。

Trac1.0.1 と git1.8 を連携(失敗)

git1.8.1.3 のインストール

# wget http://git-core.googlecode.com/files/git-1.8.1.3.tar.gz
# tar xvfz git-1.8.1.3.tar.gz
# cd git-1.8.1.3
# ./configure
# make
# make install

git リポジトリの用意

mirror 使っているけど bare でもよい

# cd /var/repos/git
# git clone --mirror https://[email protected]/fuga/test01.git

Trac.ini の設定

# vi conf/trac.ini
[components]
tracopt.versioncontrol.git.* = enabled

[git]
cached_repository = true
git_bin = /usr/local/bin/git
git_fs_encoding = utf-8
persistent_cache = true
shortrev_len = 7
trac_user_rlookup = true
use_committer_id = true
use_committer_time = true
wiki_shortrev_len = 40
wikishortrev_len = 40

[repositories]
bitbucket.dir = /var/repos/git/test01.git
bitbucket.type = git

resync を行う

# trac-admin /var/repos/trac/test01 repository resync "bitbucket"

なぜか動かず画面にエラーもでない

設定自体はこれで完了のはずだが、リポジトリブラウザを見ても tree が表示されない。。。
管理タブのバージョンコントロールで git リポジトリの項目を見てみると、
リビジョンと書いてある場所が[]と括弧だけが書いてあって、リビジョン番号が取れていない。

いろいろ調べて cache が悪いのではないかと思って OFF にしてみる

[git]
cached_repository = false
persistent_cache = false

それでも[]がなくなっただけでリビジョン番号が出ていないのは変わらず。

ログを見てみると 0 entries と出ていて、コミット?リビジョン?が取れてないみたい。

Trac[util] DEBUG: SQL: SELECT id, generation FROM cache
Trac[PyGIT] DEBUG: PyGIT.Storage instance 46912546688912 constructed
Trac[PyGIT] DEBUG: requested weak PyGIT.Storage instance 46912546688912 for '/var/repos/git/test01.git'
Trac[git_fs] DEBUG: disabled CachedRepository for '/var/repos/git/test01.git'
Trac[PyGIT] DEBUG: triggered rebuild of commit tree db for 46912546688912
Trac[PyGIT] DEBUG: rebuilt commit tree db for 46912546688912 with 0 entries (took 13.9 ms)
Trac[chrome] DEBUG: Prepare chrome data for request
Trac[PyGIT] DEBUG: PyGIT.Storage instance 46912547082704 constructed
Trac[PyGIT] DEBUG: requested weak PyGIT.Storage instance 46912547082704 for '/var/repos/git/test01.git'
Trac[git_fs] DEBUG: disabled CachedRepository for '/var/repos/git/test01.git'
Trac[main] WARNING: [xxx.xx.xxx.xx] HTTPNotFound: 404 チェンジセットが存在しません (チェンジセット None がリポジトリに存在しません)

git リポジトリが悪いのかと思って、別環境のものを clone してきたりしたが効果なし。
初めは Trac1.0ja を使っていてこれが悪いのかと思って、Trac1.0.1 に上げてみたが効果なし。
PyGit.py や Trac 本体のソースを見たがよくわからず、お手上げ状態。

ちゃんと動いていた Trac0.11 に入れたときの環境に近づけるために、
git のバージョンを下げてみることにする。

Trac1.0.1 と git1.7 を連携(成功)

git1.7.12.4 のインストール

# wget http://git-core.googlecode.com/files/git-1.7.12.4.tar.gz
# tar xvfz git-1.7.12.4.tar.gz
# cd git-1.7.12.4
# ./configure --prefix=/usr/local/git-1.7
# make
# make install

Trac.ini の修正

[git]
git_bin = /usr/local/git-1.7/bin/git

動作確認

念のため clone する git も 1.7 にしておく(resync はいらないかも)

# cd /var/repos/git
# rm -rf test01.git
# /usr/local/git-1.7/bin/git clone --mirror https://[email protected]/fuga/test01.git
# trac-admin /var/repos/trac/test01 repository resync "bitbucket"

リポジトリブラウザを見てみると無事 tree ができてたーー!!
バージョンコントロールのところにも、最新のリビジョン番号がでているし、
これで Trac と Git の連携完了 ☆

最後に false にしていた cache を有効にして、resync しておく

[git]
cached_repository = true
persistent_cache = true
# trac-admin /var/repos/trac/test01 repository resync "bitbucket"