Dreamhost subversion post-commit hooks无法正常工作

时间:2011-03-02 00:28:32

标签: svn tortoisesvn cgi dreamhost

我在网上看过很多文章,但似乎没有一个回答。 我运行一个设置:

我有一个网站会运行中继文件的副本 该网站有一个与之关联的svn文件夹 我的Mac上有wampserver / mamp的本地测试环境,我的电脑上有乌龟svn

所以我有一个存储库的检查,我做了我的更改,当我有一个版本 - 我提交文件。

我希望自动更新提交到svn存储库 - 这个wiki解释了如何执行:http://wiki.dreamhost.com/Subversion#Automatic_Post-commit_Checkout

不幸的是,它充满了问题。一旦我有了我的cgi文件夹和我更新的post-commit hook sortedm,我就收到255的退出代码。在我将cgi和钩子转换为unix并重新上传后,我的退出代码为1。

我再次更改了chmod,没有收到任何错误。 不幸的是,dreamhost不会将文件更新到我的实时网站。

我的钩子文件如下所示:

提交后:

        #!/bin/bash
        wget --http-user=username --http-passwd=password -qO - http://website.com/cgi-bin/pri/do_update.cgi     

和我的do_update.cgi:         #!/ bin / sh的

    # disable filename globbing
    set -f

    echo "Content-type: text/plain; charset=iso-8859-1"
    echo

    echo /usr/bin/svn update /home/username/website.com

谷歌回复了很多页面有这个问题,除非我突然学习如何用C编译程序,否则我无法完成这项工作。

任何帮助表示感谢,并最终会在互联网上为其他人提供一个好的答案......

2 个答案:

答案 0 :(得分:1)

经过像你这样的麻烦之后,我终于得到了在Dreamhost上运行的svn post-commit钩子。我的两个文件都与你的文件相同,只是看起来你的cgi脚本中有一个额外的'echo'。

我的cgi文件的权限是: -rwxr-xr-x (如果我没记错的话是755)

不要忘记/ cgi-bin /目录的.htaccess / .htpasswd设置:

这是/ cgi-bin /目录中的.htaccess:

AuthName "Dialog prompt"

AuthType Basic

AuthUserFile /home/username/x.com/cgi-bin/.htpasswd

Require valid-user

请记住,cgi-script文件中'wget'的用户名/密码不是你的svn用户/密码,而是你通过该.htaccess文件专门为cgi-bin目录设置的用户/密码(也不是你的DH用户名/通行证)。我不确定svn用户/通行证在哪里发挥作用,可能只在初始结账时(通过bash)。

昨晚我正在研究SO,以了解如何'重置'我的SVN(它停止运行post-commit钩子,但没有报告任何错误)。要解决问题,我必须通过bash登录DH,然后手动运行svn up。在我的X.com站点目录中运行该命令后,SVN最终报告了一个错误('文件已经存在',并且svn没有覆盖它)。为了解决这个问题,我只需将更新命令重新执行到:svn up --force。哇哇!,我的svn在我的网页目录中运行了一个完整的更新,最后我的最新文件在我的网络服务器上。呼!

如果我没记错的话(让这个post-commit-hook正常工作了几个月),我不得不通过bash在我的web目录中初步进行svn checkout。初始结账完成后,挂钩svn update正常工作。 (仅供参考,我使用乌龟进行所有常规提交)

祝所有试图在DH上运行post-commit-hooks的人好运。它可能很难设置,但最终,完全值得!

: - P

答案 1 :(得分:0)

这是我做的,它不是在linux机器上,但它似乎对我来说只是在提交后直接调用svn。如果你有一个大的出口,它会延迟你的签到一点,但是非常简单。 Linux机器应该非常相似。

钩子:

svn.exe export https://myhostname/svn/project/trunk %WEBSITEDIR%\httpdocs\store --quiet --non-interactive --force --username user --password pass