bugs.r-l.o に git.r-l.o をリポジトリとして追加した。これ単純に追加したと書いてるけど裏側では結構大変だった。
bugs.r-l.o は heroku で動かしているので、デプロイのたびにファイルシステムはリセットされる。そのため、redmine の git リポジトリ連携の要件となる bare リポジトリをファイルシステムに保持するということが工夫なくしては実現することができないというのを何とかして解決しなくてはいけない。
そこで、まずは buildpack をいじることで、bare リポジトリをある程度事前に用意するようにした。
その上で、buildpack 上で clone した bare リポジトリに対して、Repository#fetch_changesets
を実行したときに、毎回 origin からリポジトリを fetch したうえでコミットを積み上げるように redmine を改造した。
これで、毎回重複したコミットを取得するという無駄はあるものの、現実的には無視できるくらいな速度で git のコミットを heroku 上の redmine で扱えるようになった。すごい。
かなり重いけどできたのがこれ: https://bugs.ruby-lang.org/projects/ruby-trunk/repository/ruby-git
当面はサブとしてリポジトリを追加する感じになるけど、redmine 上で git の commit ref を参照で表示したり、svn ではなく git がメインとなった時に Fixed #1
というようなコミットメッセージで redmine を扱う準備ができた。次は ruby/ruby
の中にあるコードを直していく感じかなあ。