redmine と mercurial の連携 新その3

redmine の今の(0.9.x の)実装がおかしいことによる得体の知れない現象を、英語で書くのも難儀なので、日本語でまとめる。

  • DB上の時間的に最新のものは、tip じゃない。
  • だから、毎回読みに行く。
  • DB上のリビジョンに、uniq 制約が付いているので、書き込めない。
  • これが毎回

ここまでは、まぁ、良い。「仕方が無い」で済む。
んが問題は、"hg strip" した時だ。tip 近くのものを消したときは、まだ問題じゃないが、歴史の中間の head を消したときに、カオスが生まれる。

  • hg 上のリビジョンが詰まる。
  • redmine が読みに行く
  • DB上のリビジョンは uniq 制約が付いているが、scmid には付いていない
  • 同じ scmid のものが、違うリビジョンとして登録される。
  • リビジョンが uniq なので、何がなんだか分からなくなる。