

subversionにソースがコミットされたら、同一サーバ内にある HTML領域のファイルを svn
updateで更新したいと考えています。subversionのフックスクリプトである post-commitを使用しているのですが、うまくいきません。

具体的には以下の方と同じ状況で、フックスクリプト自体は動くのですが、その中の svn
updateだけが動いていません。（echoでログに出力させたコマンドを手動で叩くと正常に動きます。。 ）

▽ subversion の post-commit 中で svn update できない件  
<http://tadtak.jugem.jp/?eid=63>

※ なお、こちらに記載されている解決方法は全て試したのですが、だめでした。。。

環境は Amazon Linuxに「Bitnami Redmine」というパッケージを載せています。

以下に、フックスクリプトとログの中身を記載します。  
考えられる原因についてご教授をお願いいたします！

以下、フックスクリプトの中身

[code]

    #!/bin/sh
    # 変数を定義
    LOG=/var/log/svn/post-commit.log
    REPOS="$1"
    REV="$2"
    SVNUSER=ProtoPostCommit
    SVNPASS=ProtoPostCommit
    SVNCONFIGDIR=/opt/redmine-3.0.1-0/subversion/bin/
    SVNOPTS="--username ${SVNUSER} --password ${SVNPASS} --config-dir ${SVNCONFIGDIR}"
    PROTOHTML=/opt/redmine-3.0.1-0/apache2/htdocs/test_proto
    
    # 開始！
    echo "START ${REPOS} ${REV}" >> ${LOG}
    
    # プロト領域に移動
    cd ${PROTOHTML}
    # SVN UPDATE
    ${SVNCONFIGDIR}svn update * ${SVNOPTS} >> ${LOG}
    
    # 吐き出されるコマンドを確認
    echo "${SVNCONFIGDIR}svn update * ${SVNOPTS}" >> ${LOG}
    # 終了…
    echo "END ${REPOS} ${REV}" >> ${LOG}
    
[/code]

以下、吐き出された「/var/log/svn/post-commit.log」の中身

[code]

    START /opt/redmine-3.0.1-0/repositories/test_proto 6
    /opt/redmine-3.0.1-0/subversion/bin/svn update * --username ProtoPostCommit     --password ProtoPostCommit --config-dir /opt/redmine-3.0.1-0/subversion/bin/
    END /opt/redmine-3.0.1-0/repositories/test_proto 6
    
[/code]


CC BY-SA 3.0
2015-04-12T16:07:40.543
9078
2015-07-12T06:49:19.160
2015-04-13T00:17:31.927
9283
9283
question
svn
SVNのpost-commit中で、svn updateができない


ざっと見たところ原因はわかりませんが、標準エラー出力もログファイルに記録して確認できるようにしてみてください。また、エラーが発生した場合を想定した処理も実装することを推奨します。

以下のようにすれば、各コマンドが失敗した場合にその時点で終了(`set -e`)、標準出力だけでなく標準エラー出力もログできるよう(2つの
`exec`)になります。

[code]

    #!/bin/sh
    
    set -e
    
    exec >>/var/log/svn/post-commit.log
    exec 2>&1
    
    # 変数を定義
    REPOS="$1"
    REV="$2"
    SVNUSER=ProtoPostCommit
    SVNPASS=ProtoPostCommit
    SVNCONFIGDIR=/opt/redmine-3.0.1-0/subversion/bin/
    SVNOPTS="--username ${SVNUSER} --password ${SVNPASS} --config-dir ${SVNCONFIGDIR}"
    PROTOHTML=/opt/redmine-3.0.1-0/apache2/htdocs/test_proto
    
    # 開始！
    echo "START ${REPOS} ${REV}"
    
    # プロト領域に移動
    cd ${PROTOHTML}
    # SVN UPDATE
    ${SVNCONFIGDIR}svn update * ${SVNOPTS}
    
    # 吐き出されるコマンドを確認
    echo "${SVNCONFIGDIR}svn update * ${SVNOPTS}"
    # 終了…
    echo "END ${REPOS} ${REV}"
    
[/code]


CC BY-SA 3.0
2015-04-13T03:35:34.437
9096
2015-04-13T03:35:34.437
3061
9078
answer


質問していた件ですが、自己解決しました。。

質問に載せている文献で、以下のように文字コードを指定すれば解決する、  
と書かれていたのですが、この通りにやったらできました！  
（以前試したつもりだったのですが、うまくできていなかったようです。。）

[code]

    LANG=en_US.UTF-8 /usr/bin/svn ${SVNOPTS} update /var/www/html >> ${LOG}
    ~~~~~~~~~~~~~~~~
    
    [参考]subversion の post-commit 中で svn update できない件
    http://tadtak.jugem.jp/?eid=63
    
[/code]

お騒がせしました。


CC BY-SA 3.0
2015-04-13T04:57:36.443
9098
2015-04-13T04:57:36.443
9283
9078
answer