:::: MENU ::::

Trac1.0.1とgitを連携させる

Pocket

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://hoge@bitbucket.org/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://hoge@bitbucket.org/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"
Pocket


One Comment

  • 返信 Martin M. |

    Thanks very much for pointing out this failure is a version issue!

    I’ve tried to solve this issue for days, and everything I tried didn’t work. Thanks to Google and Google Translator I found your blog post and I’ve immediately tried to downgrade from Git 1.8.1.5 to and now everything works like a charm!

    Thank you so much!

So, what do you think ?