redmine と mercurial の連携 新その3
redmine の今の(0.9.x の)実装がおかしいことによる得体の知れない現象を、英語で書くのも難儀なので、日本語でまとめる。
- DB上の時間的に最新のものは、tip じゃない。
- だから、毎回読みに行く。
- DB上のリビジョンに、uniq 制約が付いているので、書き込めない。
- これが毎回
ここまでは、まぁ、良い。「仕方が無い」で済む。
んが問題は、"hg strip" した時だ。tip 近くのものを消したときは、まだ問題じゃないが、歴史の中間の head を消したときに、カオスが生まれる。
- hg 上のリビジョンが詰まる。
- redmine が読みに行く
- DB上のリビジョンは uniq 制約が付いているが、scmid には付いていない
- 同じ scmid のものが、違うリビジョンとして登録される。
- リビジョンが uniq なので、何がなんだか分からなくなる。