#contents

* Berkeley DBが壊れた時の対処

 svnadmin recover /path/to/svn/repos

- 他の人が作ったログファイルなどがあるとrecoverに失敗する(半端に成功する)
-- chownしてもらう(パーミッションを変えてもらうだけでいいのかも
- db内のファイルがパーミッション644に戻っているので''666にする''(そういう管理の時は

* * DB_VERSION_MISMATCH

aptでいろいろ更新後

 DB_VERSION_MISMATCH: Database environment version mismatch
 svn: bdb: Program version 4.3 doesn't match environment version

http://subversion.tigris.org/faq.html#bdb43-upgrade を参考にしつつ、~
・・・なんか違うことしてたり。

+ svnadmin recover /path/to/svn/repos → エラー
+ 古い svnadmin の バイナリを拾ってくる
+ oldsvnadmin recover /path/to/svn/repos → エラー
+ svnadmin recover /path/to/svn/repos → エラー
+ touch 〜/db/log.0000000134
+ svnadmin recover /path/to/svn/repos

そのエラー
 Repository lock acquired.
 Please wait; recovering the repository may take some time...
 svnadmin: DB_RUNRECOVERY: Fatal error, run database recovery
 svnadmin: bdb: /path/to/svn/repos/db/log.0000000134: log file open failed: No such file or directory
 svnadmin: bdb: PANIC: No such file or directory
 svnadmin: bdb: DB_ENV->log_put: 134: DB_RUNRECOVERY: Fatal error, run database recovery

結局誰が悪いのやら。~
家の環境ではそもそも DB_VERSION_MISMATCH にならず。

* ファイルの追加失敗

commit成功したあとにupdateに失敗した場合
- 追加したファイルをいったん rm
- svn update
- commit log が残されたままになるので rm

commitメッセージ書いてる横でupdateとかしたら起こりました

* TortoiseSVN

- SSHクライアントが未指定だとわかりにくいエラーメッセージが出て困る
-- enとjpでは出てくるメッセージが違う(そしてどちらも本質を突いていない
- svn+sshだと、リポジトリの不具合の種類によっては「接続が切れた」程度のエラーしか返さない
-- ssh でマシンにログインして checkout などして原因を調べないといけない

* NFS関連

- FSFSを使うこと
- NFSサーバで statd, lockd を動かす
-- FreeBSDだとrc.conf.localあたりで
 rpc_lockd_enable="YES"
 rpc_statd_enable="YES"
とか指定して /etc/rc.d/nfslocking start~
これができていないと lock できないとか言われる

* 文字コード関連

 svn: Can't convert string from native encoding to 'UTF-8'

日本語ファイル名が存在するときに checkout や update をすると起こる。~
TortoiseSVN 越しだと接続が途中で切れるのでこのメッセージすら見れない。~

 # 対処法
 # svn に LANG=C なエイリアスをあてている場合は \svn になるので注意
 LANG=ja_JP.UTF-8
 svn update
 # 日本語のファイル名は化けているので svn ls とかでがんばる
 svn mv 日本語 NIHONGO
 svn commit
 LANG=元の


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS