kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

svnのpost-commitでupdateできないときに確認すること

ハマったのでメモ。

実行権限

post-commitを実行するユーザーが誰か
post-commitの中に下記を書いて確認

whoami > /tmp/postcommit.log

2バイト文字のファイルがないか

svn up /foo/bar

を実行したいとして、/foo/bar配下に2バイト文字のファイルがあると、post-commit経由の時に失敗します。
コマンドラインで実行したときには、問題ないのに、post-commit経由の時だけ失敗するから厄介でした。
post-commitの時だけに失敗するのは、LANGの設定の問題らしいです。
post-commitにLANGの設定をいれれば2バイトのファイルがあっても問題なくなるらしいですが、未検証です。
このケースの場合、今まで動いてたのに急に動かなくなることがあります。
不具合発生時刻の前後までさかのぼって、その間に作成されたファイルの中に2バイト文字のファイルがないか確認します。

警告: post-commitフックが失敗しました (終了コード: 1)。出力:
svn: Error converting entry in directory '/foo/bar' to UTF-8
svn: Can't convert string from native encoding to 'UTF-8':