2007/01/02

Subversionレポジトリの統合

というわけで、昨日の話の続き。

あらすじ: 去年の夏ぐらいにdist-upgradeしたらうんともすんとも言わなくなったDebianのsvnとtrac。2006年のトラブルは2006年のうちに解決したいーと作業し、見事復旧したが、しかしレポジトリが何個もあるのは不便だ…! さぁどうする?!

そんなわけで、とりあえず3つのレポジトリをsvnadmin dump。そして新しい統合レポジトリをsvnadmin createで作ってsvnadmin loadを3回実行することにより1つのレポジトリへ格納成功。

ここで、統合レポジトリにするときにもともとのレポジトリ名のディレクトリを掘ってloadしたかったら、svn mkdir <ディレクトリ名>であらかじめそのディレクトリを作っておいて、svnadmin load --parent-dir <ディレクトリ名>でloadするとそのディレクトリの下にロードされます。最後にsvnadmin recoverするのも忘れずに。

こうして作った統合レポジトリからtrac環境を作り直し、よーし作業おわりーとおもってタイムラインをみたら、loadをした順番にレポジトリのリビジョン番号が付加されるので、タイムライン上にばらばらのリビジョン番号が散らかっててなんとも気持ち悪い状態に。さてどうしよう…。

やろうとおもえばリビジョン番号指定つきでdumpして、手動でうまく順番にloadするという手段でなんとかなるといえばなるけど、それはさすがに面倒だ…。一番いいのは、dumpしたファイル3つをマージするツールがあれば文句なし。統合レポジトリをdumpしてsvndumpfilter --renumber-revsとかやったらどうかなーと思ったけど、それもうまくいきません(そもそもそういうオプションでもない)。

という話をIRCでしたら、正月早々たいぷちゃんがいいツールをさがしてくれました。その名もSvnDumpTool! mergeオプションがあるので、こいつでdumpファイルをマージして出力すれば、時系列でリビジョン番号を付け直してくれるようです。

しかも、-dDIRでディレクトリ作って、-r FROM TOでリネームできちゃうぜー! とおもったんですが、リネームはなんかディレクトリ再帰してくれないので、全ディレクトリに対してうねうねと-rが必要っぽかったので、あきらめてそのままのディレクトリ構造のまま統合レポジトリ作って、そのあとsvnからmoveしまくる方法でやっつけました。

そんなわけで、やっとレポジトリをひとつにまとめることができたーってことで、オレがんばった。そしてツールおしえてくれたたいぷちゃんありがとう。

うされもん @acidlemonについて

|'-')/ acidlemonです。鎌倉市在住で、鎌倉で働く普通のITエンジニアです。

30年弱住んだ北海道を離れ、鎌倉でまったりぽわぽわしています。

外部サイト情報

  • twitter
  • github
  • facebook
  • instagram
  • work on kayac