フォーラム: 公開討議 (スレッド #19200)

マルチリポジトリもどき(案) (2008-07-02 11:56 by tag #37423)

自分で試してみようと思ってましたが、
時間がなくなりましたので、とりあえずアイデアを書いておきます。
試してみてないので本当にできるのか、使えるかどうかまでわかりません。
trac0.12になるとまともに対応するでしょうから意味はないのかもしれませんけど。

結局、InterTracを利用して核になるプロジェクトのチケットに
コミットログを入れる、それだけです。
revisionテーブルはそれぞれのDBに出来てしまいます。
ただ、そのほかは核のプロジェクトに集められるのでは。

1.核になるtracプロジェクトと対応するリポジトリを作る。
2.別にしたいリポジトリとそれに対応するtracプロジェクトを作る(複数可)。
3.それぞれのtrac.iniにInterTracの設定を行う。
(1,2で作った全てのプロジェクトを絶対アドレスで定義する。)
4.trac-post-commit-hookを書き換える。
trac.iniにInterTracの設定があり、同じtracで操作できるプロジェクトなら
コミットメッセージをメインのプロジェクトに書き込み、
そうでなければそのままそのプロジェクトに書き込むようにする。

4のところの作り方が問題かと。
trac.iniにメインのプロジェクトがわかるように定義を入れておくと
よりよいかも。
コミットメッセージは「In [xxx]」のところを書き換え、
「SubPj:rxxx」(SubPjが別にしたリポジトリ対応のプロジェクトのInterTracでの定義名,
xxxがリビジョン)のようにしたらよいと思います。

これで運用する場合、コミットログに書くチケットの番号の書き方は
「refs #yyy」でなく、「refs MainPj#yyy」(MainPjが核のプロジェクトのInterTracでの定義名,
yyyがチケット番号)のように。

いかがでしょうか。