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」カテゴリの記事
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
- Redmineは組織のナレッジ基盤として実現可能なのか~島津製作所の事例を読み解く #redmineT(2024.12.29)
- 「RedmineのUbuntu+Docker構築への移行」の感想 #redmineT(2024.11.24)
- 第27回redmine.tokyo勉強会の感想 #redmineT(2024.11.10)
- Redmineのバージョン設定でプロジェクトの設定方法が違う(2024.06.23)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
「チケット駆動開発」カテゴリの記事
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
- Redmineは組織のナレッジ基盤として実現可能なのか~島津製作所の事例を読み解く #redmineT(2024.12.29)
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
「Agile」カテゴリの記事
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
- チームトポロジーにおける4チームのインタラクションをUMLで整理してみた(2025.01.12)
- チームトポロジーの感想~大規模アジャイル開発でも組織構造は大きく変化する(2025.01.01)
- 「世界一流エンジニアの思考法」の感想(2024.12.08)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
コメント