大切なものは目に見えない - mahataの日記 (はてなブランチ) このページをアンテナに追加 RSSフィード Twitter

2008-07-14

SubversionバックエンドをBerkeleyDBからFSFSにする

前に、「Subversionで使うBerkeleyDBが壊れて見えるとき」というエントリを書きました。実はこのエントリを書いた後も同様のエラーが出ることがあり、その度にやのしんさんがコメント欄で教えてくれたdb_recoverコマンドを発行していました。


でも、やっぱりレポジトリが壊れがちというのは納得いかず、困っていたところ、id:kkandaさんからヘルプをもらいました。曰く、「そもそもBerkeleyDBは壊れやすいから、FSFSを使った方がいい」と。


ここで自問自答してしまいました。なぜここでのSubversion環境はBerkeleyDBをバックエンドにしてしまったのか。とても簡単な理由でした。


Subversion 1.2 では、svnadmin はデフォルトで FSFS ファイルシステムバックエンドで新しいリポジトリを作成します。

Subversion 1.0 では Berkeley DB リポジトリが常に作られます。Subversion 1.1 では Berkeley DB リポジトリデフォルトリポジトリタイプですが、--fs-type オプションで FSFS リポジトリを作れます。

(「svnadmin create」より)


なんということでしょう...。ちなみに、ここでのSubversionバージョンは:


$ svn --version
svn, version 1.1.4 (r13838)
   compiled Aug 21 2005, 20:56:55

Copyright (C) 2000-2004 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

...(略)...

うわー、見事に1.1系だ。ということで、FSFSを明示的に指定して、Subversionレポジトリを作り直すことにしました。


$ svnadmin dump /path/to/repos > /tmp/svn.dump
$ rm -rf /path/to/repos
$ svnadmin create /path/to/repos --fs-type FSFS
$ svnadmin load /path/to/repos < /tmp/svn.dump

詳しい説明は割愛しますが、Subversionレポジトリの状態を/tmp/svn.dumpとしてダンプし、FSFSをバックエンドとしたSubversionレポジトリを作り直して、ダンプデータを流し込むという作業を行っています。


これまでの作業で、きちんとSubversionレポジトリを作り直すことができました。チェックアウト、コミットなども問題なく行えています。id:kkandaさん++。


Enjoy your svn life!

yanoshinyanoshin 2008/07/14 23:32 うちが管理しているsvnレポジトリもやたらと壊れるので調べてみた。
>-bash-3.00$ svn --version
>svn, version 1.1.4 (r13838)
> compiled Apr 12 2005, 16:01:59

ゲーーーーッ!(キン肉マン風に)
同じだ…orz ということで、参考にしながらfsfsへfs-typeを変更する作業中。
いまだ難航中。。。

mahatamahata 2008/07/16 07:00 お、同じでしたか。
この作業を行ってから問題がなくなったようなので、やはりBerkeleyDBが悪だったようです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/mahata/20080714/1216030047