« アーキテクチャに対応する日本語がない | トップページ | チケット駆動開発が紹介されている書籍 »

2012/12/29

RedmineでCVS連携する時の注意点

RedmineでCVS連携する時の注意点が書かれていたのでメモ。

リポジトリの更新タスクが複数回実行されてしまう。 - Redmine Users (japanese) | Google グループ

2012年の今、CVSを最初から使い始めるプロジェクトはもうないだろうと思う。
しかし、5~10年以上の前からバージョン管理していたリポジトリがCVSなのでそのまま引き継いでいる、という現場はまだあるかもしれない。

RedmineのSCM連携の対象は、SVNやGit、MercurialだけでなくCVSも使える。
僕もCVSを連携して、CVSリポジトリ参照にRedmineを使った時もある。
SVNの時と違和感はない。

しかし、上記によれば、以下の問題があるらしい。

【問題(引用)】
バージョン管理システムとの連携をhttp://Redmineサーバ名/sys/fetch_changesets?key=APIキー
を使用して行っています。
Subversionだけを連携している時は長くても1~2分程度で終わっていたのですが、CVSとの連携を設定したところ、連携に数時間かかるように なってしまいました。
やむなく夜中から1回走るように設定したのですが、連携自体は行われているのにタスクの状態を見ると同じ処理が複数回実行されるようになってしまいました。
(朝の10時とかになっても同じ連携処理が数タスク同時に実行されています)
詳しく調べてみると、どうも15分おきに処理が呼び出されているようです。
CVSの連携自体が遅いのはしょうがないとしても、この何回も呼び出されるのは何とかしたいと思いいろいろ調査しているのですが、情報が見つからずに困っていま す。
現状だと昼間に実行するとCVSの接続とredmineサーバのタスクを食いつぶして使い物にならなくなってしまいます。

Redmineコミッタの丸山さんが、この問題に対して丁寧に解説されている。

【回答(引用)】
結論から言うと、「CVSはやめておいた方が良い」です。
お勧めとしては、「Mercurialにコンバートした方が良い」です。
http://mercurial.selenic.com/wiki/ConvertExtension#Converting_from_CVS
Gitは、「複数回並行して処理」が、やや難があります。

【理由(引用)】
SubversionとMercurialは連番のリビジョン番号があります。
changesetsテーブルのrevisionカラムにsvn/hgのリビジョン番号が入ります。
次回の取り込みでは、DBに保存されているリビジョン番号+1のものから 順番に取り込まれます。
revisionカラムはユニーク制約があるので、svn/hgの場合、同時に実行されても後からのものは制約違反になるので、後のものの保存が失敗するだけです。
CVSについては、リビジョン番号に相当するものがないので、Redmine側で擬似的に作成しています。
おそらく、この処理が失敗しているものと思います。
http://www.redmine.org/projects/redmine/repository/entry/tags/2.2.0/a...
今見たらトランザクションの範囲が大きいので、全く保存されていないと思われます。
svn/hgの場合は、1リビジョン毎にトランザクションがかかっているので、全く保存されないということはありません。
http://www.redmine.org/projects/redmine/repository/entry/tags/2.2.0/a...
Gitの場合、リビジョン番号に相当するものがないので、かなり複雑なことをしています。
Redmine1.4で実装が変わったので、「複数回並行して処理」に対してはsvn/hgに対しては弱いです。

丸山さんがGitよりもMercurialを推薦する理由の一つは、Redmineが連携対象のSCMのリビジョン番号で管理しているため、SVNやMercurialの方がRedmineと相性がいいからだろう。

個人的には、CVSをSVNへ移行する方法が今後の運用のハードルが低いのではないかと思っている。
cvs2svnというツールを使えば、そう難しくはない。
Windows上でもコンバート可能だし。

cvs2svn

既存の CVS リポジトリから Subversion への移行

|

« アーキテクチャに対応する日本語がない | トップページ | チケット駆動開発が紹介されている書籍 »

Redmine」カテゴリの記事

構成管理・Git」カテゴリの記事

チケット駆動開発」カテゴリの記事

Agile」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« アーキテクチャに対応する日本語がない | トップページ | チケット駆動開発が紹介されている書籍 »