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上でもコンバート可能だし。
| 固定リンク
「Redmine」カテゴリの記事
- Redmineのブロッキング機能はどこで使うのか?~FF関係で使うべきだ!(2026.08.10)
- AIエージェントのハルシネーションは「チケット駆動」で防ぐ~次世代アジャイル開発の実践論(2026.08.04)
- 製造業でアジャイルが定着しない理由~スプリント不在とチケット二重管理の壁 #Redmine(2026.07.18)
- Redmineはチェンジマネジメントのツールであるべきだ(2026.07.13)
- Redmine利用成熟度モデルによる運用戦略(2026.07.12)
「構成管理・Git」カテゴリの記事
- PLMツールとは部品表の構成管理ツールでありGitHubである(2026.03.08)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
「チケット駆動開発」カテゴリの記事
- 人の成果物は品質基準に不足しすぎるが、AIの成果物は品質基準を超過しすぎる(2026.08.16)
- チケット駆動でAIを制御する仕組みのアイデア(2026.08.13)
- Redmineのブロッキング機能はどこで使うのか?~FF関係で使うべきだ!(2026.08.10)
- AIエージェントのハルシネーションは「チケット駆動」で防ぐ~次世代アジャイル開発の実践論(2026.08.04)
- 製造業でアジャイルが定着しない理由~スプリント不在とチケット二重管理の壁 #Redmine(2026.07.18)
「Agile」カテゴリの記事
- チケット駆動でAIを制御する仕組みのアイデア(2026.08.13)
- アジャイル開発を強化するキルチェーン進化の歴史~VUCA時代におけるモノづくりの新アーキテクチャ(2026.08.11)
- 脱PDCA!DXを加速する超高速戦略「KillChain」(2026.08.10)
- AIエージェントのハルシネーションは「チケット駆動」で防ぐ~次世代アジャイル開発の実践論(2026.08.04)
- AIが設計も思考も代替する時代ではエンジニアはモデルを理解するだけの存在なのか?(2026.07.25)


コメント