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"