トップ «前の日記(2018/04/01 (日) ) 最新 次の日記(2018/04/03 (火) )» 編集 RSS feed

HsbtDiary


2018/04/02 (月) [長年日記]

bugs.r-l.o に git.r-l.o をリポジトリとして追加した

bugs.r-l.o に git.r-l.o をリポジトリとして追加した。これ単純に追加したと書いてるけど裏側では結構大変だった。

bugs.r-l.o は heroku で動かしているので、デプロイのたびにファイルシステムはリセットされる。そのため、redmine の git リポジトリ連携の要件となる bare リポジトリをファイルシステムに保持するということが工夫なくしては実現することができないというのを何とかして解決しなくてはいけない。

そこで、まずは buildpack をいじることで、bare リポジトリをある程度事前に用意するようにした。

https://github.com/ruby/heroku-buildpack-bugs-ruby-lang/commit/ea8f29816506f72f67e8db0eed584d390431d164

その上で、buildpack 上で clone した bare リポジトリに対して、Repository#fetch_changesets を実行したときに、毎回 origin からリポジトリを fetch したうえでコミットを積み上げるように redmine を改造した。

https://github.com/ruby/bugs.ruby-lang.org/compare/131de267109094241366cfcf18fd50d376bb1dad...c090a05475ca8a16c6cc460233112c86e478a5ef

これで、毎回重複したコミットを取得するという無駄はあるものの、現実的には無視できるくらいな速度で 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 の中にあるコードを直していく感じかなあ。