- 追加された行はこの色です。
- 削除された行はこの色です。
#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=元の
:補足|
ファイル名が正しくUTF-8かつ LANG=C svn なんてことをしていなければ、~
普通に update できるはず。~
~
上記のメモは非UTF-8の日本語ファイル名で保存されてた頃のメモ・・・?
:補足2|
LANGで一律指定してまうと文字コード変換でハマる場合があるので、~
こちらの方が幸せかも(cygwin svn 1.7 は少なくとも)
LC_MESSAGES=C svn
* Apache2 越しにアクセス [#apache2basic]
/var/www 直下に .htaccess なんかを置いてBASIC認証していると、~
リポジトリにアクセスしようとしたときに、以下のエラーが出る(コマンドライン svn。~
svn: REPORT request failed on '/REPOS_URI/!svn/vcc/default'
svn: Not authorized to open root of edit operation
回避方法としては /REPOS_URI に改めてBASIC認証の設定を書く。
* zshの補完が利かない
_svn_command:5: bad set of key/value pairs for associative array
みたいなのが出る。
LC_ALL などによって日本語が指定されている場合や、~
改行コード CRLF のときなどおかしくなる。~
(Cygwin の svn は LF だがそうでないバイナリの場合ハマる~
SlikSVN のような改行コード CRLF のときなどおかしくなる。~
(Cygwin の svn は LF だが日本語ファイル名でハマれる~
$(LC_ALL=C _call_program commands svn help | tr -d '\r')
改行の場合は上記のような CR 除去でごまかせる模様。
** 違うパターン
_arguments:comparguments:312: invalid argument: [--cl]:ARG:
usage=${${(M)${(f)"$(LC_ALL=C _call_program options svn help $cmd)"}:#usage:*}#usage:*$cmd] }
args=(
- ${=${${${(M)${(f)"$(LC_ALL=C _call_program options svn help $cmd)"##*Valid options:}:#* :*}%% #:*}/ ARG/:ARG:}/(#b)-([[:alpha:]]) \[--([a-z-]##)\](:ARG:)#/(--$match[2])-$match[1]$match[3] (-$match[1])--$match[2]$match[3]}
+ ${=${${${(M)${(f)"$(LC_ALL=C _call_program options svn help $cmd)"#(*Valid options:|(#e))}:#* :*}%% #:*}/ (arg|ARG)/:arg:}/(#b)(-##)([[:alpha:]]##) \[--([a-z-]##)\](:arg:)#/(--$match[3])$match[1]$match[2]$match[4] ($match[1]$match[2])--$match[3]$match[4]}
)