Posted on 2 月 15, 2007 | Category: Subversion |
何気に便利なSubversion もう開発するときには無くてはならない存在となっています・・・
FTPなんかで開発やってられないよ、て感じですSubversionについては、いっぱいいろんなページが紹介してくださってるのであえてここでは行いませんが、Web開発するときにSubversion のぽtpost-commitを使って開発をすると超便利なわけで、まあ簡単にいうとクライアントからコミットしたら勝手にwebの公開ディレクトリも更新されるもの、やり方はまた今度
さっそくpost-commitの中身から
cd /home/usr/web/usr/local/bin/svn update >>/home/usr/svn.log
こんな感じに自分の場合は書いていたのですが・・・・ 昨日いきなりsvn updateが動かない・・・・
それもpost-commitからだけ動かない・・・・
端末から直接./post-commitなら動くのに、クライアントのコミットからは動かない・・・・
いつもなら、公開ディレクトリを作り直せば直るのですが今回はどうもそんな感じではなくネットを探してみると
akiya.com Subversionのpost-commitフックでsvn updateできないときは
まさしくこれと同じ状況なわけで
/usr/local/bin/svn update/home/usr/web/*>>/home/usr/svn.log
と直したら動きました 動いたんでけどlogの出方が微妙ですね・・・
あと根本的な問題解決にはなってないですね。
なんかディレクトリのパーミッション関係の問題か、管理外のファイルがwebディレクトリ上に存在するとおかしくなるような感じなんですが、実際の原因は分からず・・・・
今度時間があったら調べてみようと思います
» Filed Under Subversion
2 月 24th, 2007 at 8:30:18
自分もまったく同じ問題にあたったのですが、解決に至ったのでフィードバックまで。(当方 Debian 3.1 Sarge + subversion 1.1.4-2 です)
自分の場合commitしたプロジェクトに日本語ファイル名のファイルが混ざっていたのが原因で、サーバ上でsvn updateをした際に svn: Can’t recode string. とエラーが出ていました。
(これ以外にありがちなパターンだとrepositoryやローカルの.svnディレクトリへのアクセス権の問題の可能性もあるようです)
最終的に、post-commit内で LANG=ja_JP.UTF=8 /usr/bin/svn update /path/to/working/directory >> logfile 2>&1 のように実行させることにより、問題が回避できるようになりました。
(以前mrtgを導入した時に逆のパターンで LANG=C mrtg … とやって実行したことがあったのを思い出してヒントを得ました)
サーバローカルにログインして実行している時は、デフォルトの言語ロケールが日本語になっていたので、たまたまうまく動いていた模様です。色々わからず苦労したあげく、標準エラーから実行時の環境変数までログファイルに吐かせてやっと原因が把握できました。LANGの指定も、apacheのsvn呼び出し時にSetEnvしてもダメ、post-commitの中で単独で設定してもダメで、本当に気が狂いそうでした。
こちらのトラブルと同じ原因かどうかわかりませんが、こちらのコンテンツにかなりヒントを頂き助けて頂いたので、とりあえずフィードバックまで。お役に立てば幸いです。
2 月 26th, 2007 at 22:45:49
あああ 日本語のファイル名をコミットしてもおかしくなりますよね・・・
これは貴重な情報ありがとうございます。
てことは
LANG=ja_JP.UTF=8 /usr/bin/svn update /path/to/working/directory/*
このコマンドでやるのが最強なのでしょうか・・・・
結構日本語がだめで諦める方もいると言う話しも聞いたことが有るので、
一度試してみたいと思います!